#include<stdio.h>
struct lee{
char x,y,c;
}v[101*101];
int n,m,min=102*102,r[101][101],J[101][101],o=0,st,dr,Sy,Sx,z,x;
char car;
char dx[9]={0,1,-1,0,0,1,-1,1,-1};
char dy[9]={0,0,0,1,-1,1,-1,-1,1};
int verf(int www,int q,int e)
{
if(q<1||q>n)
return 0;
if(e<1||e>m)
return 0;
if(www==1)
{
if(r[q][e]!=0)
return 0;
}
if(www==2)
{
if(J[q][e]!=0)
return 0;
}
return 1;
}
void citeste()
{
scanf("%d%d",&n,&m);
z=n;
x=m;
for(int i=1;i<=n;++i)
{
scanf("%c",&car);
for(int j=1;j<=m;++j)
{
scanf("%c",&car);
if(car=='X')
{
r[i][j]=-1;
J[i][j]=-1;
}
if(car=='R')
{
v[o].x=i;
v[o].y=j;
v[o].c=1;
++o;
r[i][j]=1;
}
if(car=='J')
{
J[i][j]=1;
v[o].x=i;
v[o].y=j;
v[o].c=2;
++o;
}
}
}
}
void afi()
{
/*for(int i=1;i<=n;++i)
{for(int j=1;j<=m;++j)
printf("%d ",r[i][j]);
printf("\n");
}
printf("\n\n");
for(int i=1;i<=n;++i)
{for(int j=1;j<=m;++j)
printf("%d ",J[i][j]);
printf("\n");
}*/
printf("%d %d %d",r[Sx][Sy],Sx,Sy);
}
void rezolva(int k,int a,int b)
{
for(int i=1;i<=8;++i)
{
if(verf(v[k].c,a+dx[i],b+dy[i]))
{
v[dr].x=a+dx[i];
v[dr].y=b+dy[i];
v[dr].c=v[k].c;
if(v[k].c==1)
{
r[v[dr].x][v[dr].y]=r[a][b]+1;
}
if(v[k].c==2)
{
J[v[dr].x][v[dr].y]=J[a][b]+1;
}
if(r[v[dr].x][v[dr].y]!=-1&&r[v[dr].x][v[dr].y]==J[v[dr].x][v[dr].y]&&min>=r[v[dr].x][v[dr].y])
{
if(min>r[v[dr].x][v[dr].y])
min=r[v[dr].x][v[dr].y];
if(v[dr].x<Sx||Sx==0&&r[v[dr].x][v[dr].y]==min)
{
Sx=v[dr].x;
Sy=v[dr].y;
}
}
if(r[v[dr].x][v[dr].y]>min)
st=n*n;
++dr;
}
}
}
int main()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
citeste();
dr=3;
for(st=0;st<dr;++st)
{rezolva(st,v[st].x,v[st].y);
}
afi();
}