#include<fstream>
#include<cstring>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
const int dx[]={7,-1,-1,0,1,1,1,0,-1};
const int dy[]={7,0,1,1,1,0,-1,-1,-1};
int rom[102][102],jul[102][102],n,m,xj,yj,xr,yr;
void citire()
{
char s[101];
int i,j;
f>>n>>m;
f.getline(s,3);
for(i=1;i<=n;i++)
{
f.getline(s,101);
for(j=0;j<m;j++)
{
if(s[j]=='R')
{
xr=i;
yr=j+1;
}
else if(s[j]=='J')
{
xj=i;
yj=j+1;
}
else if(s[j]=='X')
{
rom[i][j+1]=jul[i][j+1]=-1;
}
}
}
}
void bordare()
{
int i,j;
for(i=0;i<=n+1;i++)
rom[i][0]=rom[i][m+1]=jul[i][0]=jul[i][m+1]=-1;
for(j=1;j<=m;j++)
rom[0][j]=rom[n+1][j]=jul[0][j]=jul[n+1][j];
}
void leer()
{
int qx[10000],qy[10000],inc,sf,nx,ny,xx,yy,i;
inc=sf=1;
qx[1]=xr;
qy[1]=yr;
rom[xr][yr]=1;
while(inc<=sf)
{
nx=qx[inc];
ny=qy[inc];
for(i=1;i<=8;i++)
{
xx=nx+dx[i];
yy=ny+dy[i];
if(rom[xx][yy]==0)
{
sf++;
qx[sf]=xx;
qy[sf]=yy;
rom[xx][yy]=rom[nx][ny]+1;
}
}
inc++;
}
}
void leej()
{
int qx[10000],qy[10000],inc,sf,nx,ny,xx,yy,i;
inc=sf=1;
qx[1]=xr;
qy[1]=yr;
jul[xr][yr]=1;
while(inc<=sf)
{
nx=qx[inc];
ny=qy[inc];
for(i=1;i<=8;i++)
{
xx=nx+dx[i];
yy=ny+dy[i];
if(jul[xx][yy]==0)
{
sf++;
qx[sf]=xx;
qy[sf]=yy;
jul[xx][yy]=jul[nx][ny]+1;
}
}
inc++;
}
}
int main()
{
int i,j;
citire();
bordare();
leer();
leej();
int min1,xmin,ymin;
min1=n*m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(rom[i][j]>0&&rom[i][j]==jul[i][j]&&rom[i][j]<min1)
{
min1=rom[i][j];
xmin=i;
ymin=j;
}
g<<min1<<" "<<xmin<<" "<<ymin<<"\n";
return 0;
}