# include <iostream>
# include <fstream>
# include <queue>
using namespace std;
int ro[101][101],ju[101][101],dl[]= {0,0,1,-1,1,-1,-1,1},dc[]= {1,-1,0,0,1,-1,1,-1},n,m,xr,yr,xj,yj;
char ch;
queue <pair <int,int> > c;
ifstream f("rj.in");
ofstream g("rj.out");
void cit()
{
f>>n>>m;
f.get();
for(int i=1; i<=n; ++i)
{
for(int j=1; j<=m; ++j)
{
f.get(ch);
if(ch=='X')ro[i][j]=ju[i][j]=-1;
if(ch=='R'){xr=i;yr=j;}
if(ch=='J'){xj=i;yj=j;}
}
f.get();
}
}
bool ok(int i,int j)
{
if(ro[i][j]==-1)return false;
if(i<1 || j<1 || i>n || j>m)return false;
return true;
}
void lee(int x,int y,int b[101][101])
{
int i,j,i_urm,j_urm,dir;
b[x][y]=1;
c.push(make_pair(x,y));
while(c.empty()==0)
{
i=c.front().first;
j=c.front().second;
c.pop();
for(dir=0;dir<=7;++dir)
{
i_urm=i+dl[dir];
j_urm=j+dc[dir];
if(ok(i_urm,j_urm)==true && b[i_urm][j_urm]==0)
{
c.push(make_pair(i_urm,j_urm));
b[i_urm][j_urm]=b[i][j]+1;
}
}
}
}
int main()
{
int mini=10000,xmin=-1,ymin=-1,i,j;
cit();
lee(xr,yr,ro);
lee(xj,yj,ju);
for(int i=1; i<=n; ++i)
for(int j=1; j<=m; ++j)
if(ro[i][j]==ju[i][j] && ro[i][j]>0 && ro[i][j]<mini)
{
mini=ro[i][j]; xmin=i; ymin=j;
}
g<<mini<<" "<<xmin<<" "<<ymin;
}