#include <iostream>
#include <fstream>
#include <cstdio>
using namespace std;
FILE *fin=fopen("rj.in","r");
FILE *fout=fopen("rj.out","w");
int dx[]={0,-1,-1,-1,0,1,1,1,0};
int dy[]={0,-1,0,1,1,1,0,-1,-1};
int n, m, xr, yr, xj, yj, a[101][101],b[101][101];
void citire(int a[][101], int b[][101])
{
int i,j;
char x;
fscanf(fin, "%d %d", &n, &m);
fscanf(fin,"%c", &x);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
fscanf(fin,"%c", &x);
if(x=='R')
{
xr=i;
yr=j;
a[i][j]=b[i][j]=0;
}
else if(x=='J')
{
xj=i;
yj=j;
a[i][j]=b[i][j]=0;
}
else
if(x=='X')
a[i][j]=b[i][j]=-1;
else a[i][j]=b[i][j]=0;
}
fscanf(fin,"%c", &x);
}
}
void afisare(int a[][101])
{
int i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
printf("%d",a[i][j]);
printf("\n");
}
}
struct coord
{
int x,y;
} c[10002];
int interior(int x,int y)
{
return (x>=1&&x<=n&&y>=1&&y<=m);
}
void lee(int a[][101], int x, int y)
{
int p,u,xv,yv,i;
p=u=1;
c[u].x=x;
c[u].y=y;
a[x][y]=1;
while(p<=u)
{
x=c[p].x;
y=c[p++].y;
for(i=1;i<=8;i++)
{
xv=x+dx[i];
yv=y+dy[i];
if(interior(xv,yv)&&a[xv][yv]==0)
{
a[xv][yv]=a[x][y]+1;
c[++u].x=xv;
c[u].y=yv;
}
}
}
}
int main()
{ int i, j, x, y, z;
citire(a,b);
lee(a,xr,yr);
lee(b,xj,yj);
x=0,y=0,z=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]==b[i][j]&&a[i][j]>0&&x==0)
{
x=i;
y=j;
z=a[i][j];
}
fprintf(fout,"%d %d %d", z,x,y);
return 0;
}