#include <cstdio>
using namespace std;
const int N=100;
int mat[N+1][N+1],n,m;
int lee1[N+1][N+1];
int lee2[N+1][N+1];
struct rj
{
int x,y;
};
rj c[4*(N+1)];
int dx[]={1,0,-1,0,1,-1,1,-1};
int dy[]={0,1,0,-1,1,-1,-1,1};
int petabla(int x,int y)
{
if(x>=1 && x<=n && y>=1 && y<=m)
return 1;
else
return 0;
}
void fc(int i,int j)
{
int x,y,k,p=0,u=1;
c[p].x=i;
c[p].y=j;
while(p!=u)
{
for(k=0;k<=7;k++)
{
x=c[p].x+dx[k];
y=c[p].y+dy[k];
if(petabla(x,y)==1 && lee1[x][y]==0 && mat[x][y]==0)
{
c[u].x=x;
c[u].y=y;
u++;
u = u % (4 * N);
lee1[x][y]=lee1[c[p].x][c[p].y]+1;
}
}
p++;
p = p % (4 * N);
}
}
int main()
{
FILE *in,*out;
in=fopen("rj.in","r");
out=fopen("rj.out","w");
int i,j,xr,yr,xj,yj,min=9999999,pozi,pozj;
fscanf(in,"%d%d",&n,&m);
char c;
fscanf(in,"%c",&c);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
fscanf(in,"%c",&c);
if(c=='R')
{
xr=i;
yr=j;
}
if(c=='J')
{
xj=i;
yj=j;
}
if(c=='X')
mat[i][j]=-1;
}
fscanf(in,"%c",&c);
}
lee1[xr][yr]=1;
fc(xr,yr);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
lee2[i][j]=lee1[i][j];
lee1[i][j]=0;
}
}
lee1[xj][yj]=1;
fc(xj,yj);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(lee1[i][j]==lee2[i][j] && lee1[i][j]!=0)
{
if(lee1[i][j]<min)
{
min=lee1[i][j];
pozi=i;
pozj=j;
}
}
}
}
fprintf(out,"%d %d %d",min,pozi,pozj);
return 0;
}