#include<fstream.h>
char a[30][30];
int n,m,b[50][50],mat[50][50];
typedef struct {int x,y;} coada;
coada c[100];
int xr,yr,xj,yj,dx[8]={1,0,-1,0,1,-1,1,-1}, dy[8]={0,-1,0,1,-1,1,1,-1},k,l;
void citire()
{
ifstream f("rj.in");
f>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{f>>a[i][j];
if(a[i][j]=='R') {xr=i;yr=j;b[i][j]=mat[i][j]=0;}
else if(a[i][j]=='J') {xj=i;yj=j;b[i][j]=mat[i][j]=0;}
else if(a[i][j]=='X') b[i][j]=mat[i][j]=-1;
else b[i][j]=mat[i][j]=0;
}
}
void BFS(int x,int y , int q[][50])
{
int p=1,u=1,k1,l1;
c[u].x=x;
c[u].y=y;
q[x][y]=1;
while(u>=p)
{
k=c[p].x;
l=c[p].y;
for(int i=0;i<=7;i++)
{
k1=k+dx[i];
l1=l+dy[i];
if(k1>=1 && k1<=n && l1>=1 && l1<=m && q[k1][l1]==0);
{
c[++u].x=k1;
c[u].y=l1;
q[k1][l1]=q[k][l]+1;
}
}
p++;}
}
void main()
{
int min=32000,i,j,p,q;
citire();
BFS(xr,yr,b);
BFS(xj,yj,mat);
for(i=1;i<=n;j++)
for(j=1;j<=m;j++)
if(b[i][j]==mat[i][j] && b[i][j]<min)
{
p=i;
q=j;
min=b[i][j];
}
ofstream g("rj.out");
g<<min<<" "<<p<<" "<<q;
g.close();
}