#include <fstream>
#define Nmax 200
#define Aux 1000000
using namespace std;
ifstream in("rj.in");
ofstream out("rj.out");
const int dx[]={-1,-1,0,1,1,1,0,-1};
const int dy[]={0,1,1,1,0,-1,-1,-1};
int bune(int n,int m,int a,int b)
{
if(a<=0 || a>n || b<=0 || b>m)
return 0;
else return 1;
}
void lee (int n,int m,int v[][Nmax],int xi,int yi)
{
int cx[Nmax*Nmax],cy[Nmax*Nmax],ii,jj,pi=0,ps=0,k;
cx[0]=xi;
cy[0]=yi;
v[xi][yi]=1;
while(pi<=ps)
{
for(k=0;k<8;k++)
{
ii=cx[pi]+dx[k];
jj=cy[pi]+dy[k];
if(bune(n,m,ii,jj)==1)
if(v[ii][jj]==0)
{
v[ii][jj]=v[cx[pi]][cy[pi]]+1;
ps++;
cx[ps]=ii;
cy[ps]=jj;
}
}
pi++;
}
}
void citire(int vectRom[][Nmax],int vectJuli[][Nmax],int n,int m,int &xrom,int &yrom,int &xjuli,int &yjuli)
{
char p[265];
int i,j;
in.getline(p,101,'\n');
for(i=0;i<=n;i++)
{
in.getline(p,101,'\n');
for(j=0;j<m;j++)
{
if(p[j]==' ')
{
vectRom[i][j+1]=0;
vectJuli[i][j+1]=0;
}
else if(p[j]=='R')
{
xrom=i;
yrom=j+1;
}
else if(p[j]=='J')
{
xjuli=i;
yjuli=j+1;
}
else if(p[j]=='X')
{
vectRom[i][j+1]=1;
vectJuli[i][j+1]=1;
}
}
}
}
int main()
{
int n,m,xrom,yrom,vectRom[Nmax][Nmax],vectJuli[Nmax][Nmax],xjuli,yjuli,i,j,ii,jj,maxdrum=Aux;
in>>n>>m;
citire(vectRom,vectJuli,n,m,xrom,yrom,xjuli,yjuli);
lee(n,m,vectRom,xrom,yjuli);
lee(n,m,vectJuli,xjuli,yjuli);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
if(vectRom[i][j]==vectJuli[i][j] and vectRom[i][j]>=2)
if(vectRom[i][j]<maxdrum)
{
maxdrum=vectRom[i][j];
ii=i;
jj=j;
}
out<< maxdrum << " " << ii << " " << jj;
}
return 0;
}