#include <fstream>
#include <iomanip>
using namespace std;
ifstream x("rj.in");
ofstream y("rj.out");
int dl[]={-1,-1,-1,0,1,1,1,0};//deplasarea pe linie
int dc[]={-1,0,1,1,1,0,-1,-1};//deplasarea pe coloana
char c;
int oras1[101][101],oras2[101][101],i,j,n,m,prim,ultim,k;
int tmin,x_intalnire,y_intalnire; /* timpul minim si coordonatele
de intalnire a lui romeo cu julieta*/
struct silviu
{
int lin,col;
};
/*silviu cr[5050],sr,vr,pr,cj[5050],sj,vj,pj;/*coada romeo,start romeo,
vecin romeo ,pozitie curenta romeo,coada julieta,start juliata
vecin julieta ,pozitie curenta julieta*/// ceva ce nu mi-a iesit
silviu C[10201],v,p,sr,sj;/*coada,vecinul,pozitia curenta
start romeo,start sulieta,*/
void citesc()
{
x>>n>>m;
x.get(c);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
x.get(c);
if(c=='R') {sr.lin=i;sr.col=j;/*oras[i][j]=1;*/}
if(c=='J') {sj.lin=i;sj.col=j;/*oras[i][j]=2;*/}
if(c=='X') oras1[i][j]=oras2[i][j]=-1;
}
if(i!=1) x.get(c);
}
for(i=0;i<=m+1;i++) oras1[0][i]=oras1[n+1][i]=oras2[0][i]=oras2[n+1][i]=-1;
for(i=0;i<=n+1;i++) oras1[i][0]=oras1[i][m+1]=oras2[i][0]=oras2[i][m+1]=-1;
}
void scriu(int o[101][101])
{
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
y<<setw(2)<<o[i][j];
y<<'\n';
}
}
void lee( silviu s ,silviu f,int o[101][101])//start, final
{
prim=ultim=0;
C[0]=s;
o[s.lin][s.col]=1;
//y<<s.lin<<s.col;
//y<<"\n\n"<<f.lin<<f.col;
while(prim<=ultim && o[f.lin][f.col]==0)
{
p=C[prim];
prim++;
for(k=0;k<8;k++)
{
v.lin=p.lin+dl[k];
v.col=p.col+dc[k];
if(o[v.lin][v.col]==0)
{
ultim++;
C[ultim]=v;
o[v.lin][v.col]=o[p.lin][p.col]+1;
}
}
}
}
void afisez()
{
int tmin=200;
//tmin=oras1[sj.lin][sj.col]/2+1;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(oras1[i][j]==oras2[i][j] && oras1[i][j]>1 && oras1[i][j]<tmin)
{
//y<<oras1[i][j]<<" - "<<oras2[i][j]<<'\n' ;
tmin=oras1[i][j];
x_intalnire=i;
y_intalnire=j;
//y<<'\n'<<min<<'\n';
}
y<<tmin<<' '<<x_intalnire<<' '<<y_intalnire;
}
int main()
{
citesc();
//scriu(oras1);
lee(sr,sj,oras1);
//y<<"\n\n";
//scriu(oras1);
lee(sj,sr,oras2);
//y<<"\n\n";
//scriu(oras2);
afisez();
return 0;
}