#include<stdio.h>
int min,c1,c2,i,m,n,r[102][102],j[102][102],rx,nr,nr1,ry,jx,jy,p,u,xc,yc,k;
char v[102][102],car;
struct eu
{
int x,y;
}c[10004];
int dx[]={0,-1,0,1,0,1,1,-1,-1};
int dy[]={0,0,1,0,-1,1,-1,1,-1};
int main ()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i)
{
scanf("%c",&car);
for(k=1;k<=m;++k)
{
scanf("%c",&v[i][k]);
if(v[i][k]==' ')
++nr;
if(v[i][k]=='R')
{rx=i;ry=k;}
else
if(v[i][k]=='J')
{jx=i;jy=k;}
}
}
++nr;
p=u=1;
c[1].x=rx;
c[1].y=ry;
r[rx][ry]=1;
xc=rx;
yc=ry;
nr1=0;
while(p<=u)
{
for(i=1;i<=8;++i)
{
xc=c[p].x+dx[i];
yc=c[p].y+dy[i];
if(xc>0&&xc<=n&&yc>0&&yc<=m)
if(v[xc][yc]!='X'&&r[xc][yc]==0)
{
c[++u].x=xc;
c[u].y=yc;
r[xc][yc]=r[c[p].x][c[p].y]+1;
nr1++;
}
if(v[xc][yc]=='J')
{
p=u+1;
break;
}
}
p++;
}
p=u=1;
c[1].x=jx;
c[1].y=jy;
j[jx][jy]=1;
xc=jx;
yc=jy;
nr1=0;
while(p<=u)
{
for(i=1;i<=8;++i)
{
xc=c[p].x+dx[i];
yc=c[p].y+dy[i];
if(xc>0&&xc<=n&&yc>0&&yc<=m)
if(v[xc][yc]!='X'&&j[xc][yc]==0)
{
c[++u].x=xc;
c[u].y=yc;
j[xc][yc]=j[c[p].x][c[p].y]+1;
++nr1;
}
if(v[xc][yc]=='R')
{
p=u+1;
break;
}
}
p++;
}
if(rx==jx&&jy==ry)
{
printf("%d %d %d",0,rx,ry);
return 0;
}
min=9999999;
for(i=1;i<=n;++i)
for(k=1;k<=m;++k)
{
if(r[i][k])
if(r[i][k]==j[i][k])
if(r[i][k]<min)
{
min=r[i][k];
c1=i;
c2=k;
}
}
printf("%d %d %d",min,c1,c2);
return 0;
}