#include<stdio.h>
const signed char dl[]={1,1,0,-1,-1,-1,0,1}, dc[]={0,1,1,1,0,-1,-1,-1};
short int romeo[102][102], julieta[102][102];
struct pozitie{short int x,y;};
int main()
{
FILE *in=fopen("rj.in","r"), *out=fopen("rj.out","w");
int m,n,i,j,jx,jy,p=0,u=1,x,y,min=10010;
pozitie c[10010];
char e,l1,l2;
fscanf(in,"%d%d ",&n,&m);
for(i=1;i<=n;++i)
{
for(j=1;j<=m;++j)
{
fscanf(in,"%c",&e);
if(e=='X')
romeo[i][j]=julieta[i][j]=-1;
if(e=='R')
{
julieta[i][j]=-1;
romeo[i][j]=1;
c[0].x=j;
c[0].y=i;
}
if(e=='J')
{
romeo[i][j]=-1;
julieta[i][j]=1;
jx=j;
jy=i;
}
}
fscanf(in,"%c%c",&l1,&l2);
romeo[i][0]=romeo[i][m+1]=julieta[i][0]=julieta[i][m+1]=-1;
}
fclose(in);
for(i=0;i<=m+1;++i)
romeo[0][i]=romeo[n+1][i]=julieta[0][i]=julieta[n+1][i]=-1;
while(p<=u-1)
{
x=c[p].x;
y=c[p++].y;
for(i=0;i<8;++i)
if(romeo[y+dl[i]][x+dc[i]]==0)
{
c[u].x=x+dc[i];
c[u].y=y+dl[i];
++u;
romeo[y+dl[i]][x+dc[i]]=romeo[y][x]+1;
}
}
p=0;
u=1;
c[0].x=jx;
c[0].y=jy;
while(p<=u-1)
{
x=c[p].x;
y=c[p++].y;
for(i=0;i<8;++i)
if(julieta[y+dl[i]][x+dc[i]]==0)
{
c[u].x=x+dc[i];
c[u].y=y+dl[i];
++u;
julieta[y+dl[i]][x+dc[i]]=julieta[y][x]+1;
}
}
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
if(romeo[i][j]==julieta[i][j]&&romeo[i][j]!=-1&&romeo[i][j]!=0)
if(romeo[i][j]<min)
{
min=romeo[i][j];
x=j;
y=i;
}
fprintf(out,"%d %d %d",min,y,x);
fclose(out);
return 0;
}