#include <fstream>
#include <queue>
using namespace std;
char c[101];
int n,k,m,dist,l,i,j,ir,jr,ij,jj,x,y;
int a[101][101];
int di[8]={1,0,-1,-1,-1,1,0,1};
int dj[8]={-1,-1,-1,1,0,0,1,1};
queue <pair<int, int> > coada;
ifstream fi("rj.in");
ofstream fo("rj.out");
bool verif(int i, int j)
{
if(i>n or j>m or i<1 or j<1)
return false;
if(a[i][j]==1)
return false;
return true;
}
int lee(int xr,int yr,int xj,int yj)
{
int i,j,i_urm,j_urm;
a[xr][yr]=100000;
a[xj][yj]=-100000;
coada.push(make_pair(xr,yr));
coada.push(make_pair(xj,yj));
while(!coada.empty())
{
i=coada.front().first;
j=coada.front().second;
coada.pop();
for(int dir=0;dir<7;dir++)
{
i_urm=i+di[dir];
j_urm=j+dj[dir];
if(verif(i_urm,j_urm))
if(a[i_urm][j_urm]==0)
{
a[i_urm][j_urm]=a[i][j]+1;
coada.push(make_pair(i_urm,j_urm));
}
else
if(a[i][j]>=100000 and a[i_urm][j_urm]<0)
{
x=i_urm;
y=j_urm;
l=a[i][j]-100000;
return 0;
}
else
if(a[i][j]<0 and a[i_urm][j_urm]>=100000)
{
x=i_urm;
y=j_urm;
l=a[i_urm][j_urm]-100000+1;
return 0;
}
}
}
return 0;
}
int main()
{
fi>>n>>m;
for(i=1;i<=n;i++)
{
fi.get();
fi.get(c,101);
for(j=0;j<=m-1;j++)
{if(c[j]=='R')
{
ir=i;
jr=j+1;
}
if(c[j]=='X')
a[i][j+1]=1;
if(c[j]=='J')
{
ij=i;
jj=j+1;
}}
}
// for(i=1;i<=n;i++)
// {for(j=1;j<=m;j++)
// fo<<a[i][j]<<" ";
// fo<<endl;}
lee(ir,jr,ij,jj);
fo<<l<<" "<<x<<" "<<y;
}