#include <iostream>
#include <fstream>
using namespace std;
const int dx[]={-1,-1,0,1,1,1,0,-1};
const int dy[]={0,1,1,1,0,-1,-1,-1};
#define Nmax 100
ofstream out("rj.out");
int n,m,a[Nmax][Nmax],xi,yi,xf,yf,b[Nmax][Nmax];
void citire()
{ char x[100];
ifstream in("rj.in");
in>>n>>m;
in.get();
for(int i=0;i<n;i++)
{
in.getline(x,101,'\n');
for(int j=0;j<m;j++)
{
if(a[i][j]=='X')
{
a[i][j]=1;
b[i][j]=1;
}
if(a[i][j]=='R')
{
xi=i;
yi=j;
}
if(a[i][j]=='J')
{
xf=i;
yf=j;
}
}
}
in.close();
}
int bune(int i,int j)
{
return (i>=0 and j>=0 and i<n and j<m);
}
void afisare()
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
out<<a[i][j]<<" ";
out<<endl;
}
out<<endl;
}
void lee(int n,int m,int a[][Nmax],int xi,int yi)
{
int pi,ps,v[10000],y[10000],ii,jj;
v[0]=xi;
y[0]=yi;
pi=0;
ps=0;
a[xi][yi]=1;
while(pi<=ps)
{
for(int k=0;k<8;k++)
{
ii=v[pi]+dx[k];
jj=y[pi]+dy[k];
if(bune(ii,jj))
{
if(a[ii][jj]==0)
{
a[ii][jj]=a[v[pi]][y[pi]]+1;
ps++;
v[ps]=ii;
y[ps]=jj;
}
}
}
pi++;
}
}
int main()
{
citire();
int minn,i,j,im,ym;
minn=100*100;
lee(n,m,a,xi,yi);
lee(n,m,b,xf,yf);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
if(a[i][j]>1 and b[i][j]==a[i][j])
{
if(a[i][j]<minn)
{
minn=a[i][j];
im=i;
ym=j;
}
}
}
out<<minn<<" "<<im+1<<" "<<ym+1<<" ";
out.close();
return 0;
}