#include <cstdio>
#define DIM 102
int dl[11] ={ -1, -1, -1, 0 ,0, 1, 1, 1};
int dc[11] ={ -1, 0, 1, -1, 1, -1, 0, 1};
struct coada{ int l,c;} c[DIM*DIM],y,x;
int n,i,p,lmin,cmin,min,u,j,nn,rx,ry,jx,jy,mr[DIM][DIM],mj[DIM][DIM];
char m[DIM][DIM];
using namespace std;
void read()
{
scanf("%d%d\n",&n,&nn);
for(i=1; i<=n; ++i)
{
fgets(m[i],DIM,stdin);
for(j=0; j<nn; ++j)
if(m[i][j]=='R') { rx=i; ry=j+1;}
else if(m[i][j]=='J') { jx=i; jy=j+1;}
else if(m[i][j]=='X') mj[i][j+1]=mr[i][j+1]=-1;
}
}
void delimitare()
{
for(i=0; i<=n; ++i) { mj[i][nn+1]=mj[i][0]=mr[i][0]=mr[i][nn+1]=-1;}
for(i=0; i<=nn; ++i) { mj[n+1][i]=mj[0][i]=mr[n+1][i]=mr[0][i]=-1;}
}
void bfr()
{
//Vino Julieta mea!:)
mr[rx][ry]=1;
p=u=0;
x.l=rx;x.c=ry;
c[p]=x;
while( p<=u )
{
x=c[p++];
for(i=0; i<8; ++i)
{
y.l=x.l+dl[i];
y.c=x.c+dc[i];
if(mr[y.l][y.c]==0)
{
mr[y.l][y.c]=mr[x.l][x.c]+1;
c[++u]=y;
}
}
}
}
void bfj()
{
//Vin Romica ! :)
mj[jx][jy]=1;
p=u=0;
x.l=jx;x.c=jy;
c[p]=x;
while( p<=u )
{
x=c[p++];
for(i=0; i<8; ++i)
{
y.l=x.l+dl[i];
y.c=x.c+dc[i];
if(mj[y.l][y.c]==0)
{
mj[y.l][y.c]=mj[x.l][x.c]+1;
c[++u]=y;
}
}
}
}
void amorezi()
{
//scena aceasta ar trebui cenzurata :)
lmin=cmin=min=100000;
for(i=1; i<=n; ++i)
for(j=1;j<=nn; ++j)
if( (mr[i][j]!=0 && mr[i][j]!=-1) && mr[i][j]==mj[i][j])
if(mr[i][j]<min)
{
min=mr[i][j];
lmin=i;
cmin=j;
}
printf("%d %d %d\n",min,lmin,cmin);
}
int main()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
read();
delimitare();
bfr();
bfj();
amorezi();//Intalnirea dintre cei 2 :>:)
return 0;//Si am incalecat pe o sa si v-am spus povestea asa.
}