#include <stdio.h>
FILE *f=fopen("rj.in", "r"), *g=fopen("rj.out", "w");
int a[101][101], b[101][101], m, n, t1, sw, i, j;
int x[101], y[101], x1[101], y1[101], xa, ya, xb, yb, t, r;
int dl[]={0, -1, -1, -1, 0, 1, 1, 1, 0};
int dc[]={0, -1, 0, 1, 1, 1, 0, -1, -1};
char xxx;
void mmset(int z[101], int er, int n)
{
for (int i=1;i<=n;i++)
z[i]=er;
}
void mmcpy(int z[101], int zz[101], int n)
{
for (int i=1;i<=n;i++)
z[i]=zz[i];
}
void drum(int v[101][101], int a, int b)
{
for (int i=1;i<=8;i++)
if (a+dl[i]>0&&a+dl[i]<=m&&b+dc[i]>0&&b+dc[i]<=n)
if (v[a+dl[i]][b+dc[i]]==0)
{
v[a+dl[i]][b+dc[i]]=v[a][b]+1;
x1[++t1]=a+dl[i];
y1[t1]=b+dc[i];
}
else
if (v[a+dl[i]][b+dc[i]]==-3||v[a+dl[i]][b+dc[i]]==-2)
{
r=v[a][b];
sw=1;
}
}
void lee(int v[101][101], int xx, int yy)
{
t=1;
mmset(x, 0, 100);
mmset(y, 0, 100);
sw=0;
x[1]=xx;
y[1]=yy;
v[xx][yy]=0;
while(!sw)
{
for (int i=1;i<=t;i++)
drum(v, x[i], y[i]);
v[xx][yy]=-5;
t=t1;
t1=0;
mmcpy(x, x1, 100);
mmcpy(y, y1, 100);
mmset(x1, 0, 100);
mmset(y1, 0, 100);
if (x[1]==0)
break;
}
}
void citeste()
{
fscanf(f, "%d%d", &m, &n);
for (i=1;i<=m;i++)
{
fscanf(f, "%c", &xxx);
for (j=1;j<=n;j++)
{
fscanf(f, "%c", &xxx);
if (xxx=='X')
a[i][j]=-1;
else
if (xxx=='J')
{
xa=i;
ya=j;
a[i][j]=-2;
}
else
if (xxx=='R')
{
a[i][j]=-3;
xb=i;
yb=j;
}
}
mmcpy(b[i], a[i], 101);
}
fclose(f);
}
void tipareste()
{
sw=0;
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
if (a[i][j]==b[i][j]&&a[i][j]==r)
{
fprintf(g, "%d %d %d", r+1, i, j);
sw=1;
break;
}
if (sw)
break;
}
fclose(f);
fclose(g);
}
int main()
{
citeste();
lee(a, xa, ya);
lee(b, xb, yb);
r=r/2+1;
tipareste();
return 0;
}