#include <stdio.h>
typedef struct {
int x,y;
} poz;
void citire (int a[101][101], int b[101][101], int &xr,int &yr, int &xj, int &yj, int &n, int &m) {
int i,j;
char c;
FILE *f=fopen ("rj.in","r");
fscanf (f,"%d%d",&n,&m); fscanf (f,"%c",&c);
for (i=1;i<=n;i++) {
for (j=1;j<=m;j++) {
fscanf (f,"%c",&c);
if (c=='X') a[i][j]=b[i][j]=-1;
else if (c=='R') { xr=i; yr=j; a[i][j]=b[i][j]=1;}
else if (c=='J') { xj=i; yj=j; b[i][j]=b[i][j]=1;}
else a[i][j]=b[i][j]=0;
}
fscanf (f,"%c",&c);
}
fclose(f);
}
int verifica (int xv, int yv, int a[101][101], int n, int m) {
if (xv<=n && xv>=1 && yv<=m && yv>=1 && a[xv][yv]==0) return 1;
return 0;
}
void Lee (int a[101][101], int xr, int yr, int n, int m) {
int dx[]={-1,-1,-1,0,1,1,1,0}, dy[]={1,0,-1,-1,-1,0,1,1},p,u,x,y,i,xv,yv;
poz c[10010];
p=u=1;
c[u].x=xr;
c[u].y=yr;
while (p<=u) {
x=c[p].x;
y=c[p++].y;
for (i=0;i<=7;i++) {
xv=x+dx[i];
yv=y+dy[i];
if (verifica (xv,yv,a,n,m)==1) {
a[xv][yv]=a[x][y]+1;
c[++u].x=xv;
c[u].y=yv;
}
}
}
}
int main ()
{ int a[101][101], b[101][101], xr,yr, xj,yj,i,j,n,m,xp,yp,min;
FILE *g=fopen ("rj.out","w");
citire (a,b,xr,yr,xj,yj,n,m);
Lee (a,xr,yr,n,m);
Lee (b,xj,yj,n,m);
min=n*n+1;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (a[i][j]==b[i][j] && a[i][j]<min && a[i][j]>1) {min=a[i][j]; xp=i; yp=j;}
fprintf (g,"%d %d %d",min,xp,yp);
fclose (g);
return 0;
}