#include <iostream>
#include <cstring>
#include <fstream>
#include <cstdio>
using namespace std;
char l[101];
int a[101][101],b[101][101];
int i,j,n,m,tmin,R,J;
int dx[8]={-1,-1,0,1,1,1,0,-1};
int dy[8]={0,-1,-1,-1,0,1,1,1};
struct casa {
int x,y;
}rom,jul;
ifstream f("rj.in",ifstream::in);
ofstream g("rj.out",ifstream::out);
bool matrice(int x,int y)
{
if(x<=n&&y<=m)
return true;
return false;
}
void drumjulieta(int x,int y,int n,int m)
{
int k;
if(matrice(x,y))
if(b[x][y]>-1)
{
for(k=0;k<8;k++)
if(b[x+dx[k]][y+dy[k]]==0&&matrice(x+dx[k],y+dy[k]))
b[x+dx[k]][y+dy[k]]=b[x][y]+1;
}
}
void drumromeo(int x,int y,int n,int m)
{
int k;
if(matrice(x,y))
if(a[x][y]>-1)
{
for(k=0;k<8;k++)
if(a[x+dx[k]][y+dy[k]]==0&&matrice(x+dx[k],y+dy[k]))
a[x+dx[k]][y+dy[k]]=a[x][y]+1;
}
}
int main()
{
f>>n>>m;
f.getline(l,5);
for(i=1;i<=n;i++)
{
f.getline(l,102,'\n');
for(j=0;j<m;j++)
if(l[j]=='X')
a[i][j+1]=b[i][j+1]=-1;
else
if(l[j]=='R')
{
a[i][j+1]=1;
rom.x=i;
rom.y=j+1;
}
else
if(l[j]=='J')
{
b[i][j+1]=1;
jul.x=i;
jul.y=j+1;
}
else
if(l[j]==' ')
a[i][j+1]=b[i][j+1]=0;
}
for(i=jul.x;i<=n;i++)
for(j=jul.y;j<=m;j++)
if(b[i][j]>-1)
drumjulieta(i,j,n,m);
for(i=jul.x;i>=1;i--)
for(j=jul.y;j>=1;j--)
if(b[i][j]>-1)
drumjulieta(i,j,jul.x,jul.y);
for(i=rom.x;i<=n;i++)
for(j=rom.y;j<=m;j++)
if(a[i][j]>-1)
drumromeo(i,j,n,m);
for(i=rom.x;i>=1;i--)
for(j=rom.y;j>=1;j--)
if(a[i][j]>-1)
drumromeo(i,j,rom.x,rom.y);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]==b[i][j]&&a[i][j]>0)
{
g<<a[i][j]<<" "<<i<<" "<<j;
i=n+1;
j=m+1;
}
return 0;
}