#include <iostream>
#include <fstream>
using namespace std;
const int dx[]={0,-1,-1,0,1,1,1,0,-1};
const int dy[]={0,0,1,1,1,0,-1,-1,-1};
short mr[102][102],mj[102][102],n,m,xj,yj,xr,yr;
void citire()
{
int i,j;
char s[101];
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
cin>>n>>m;
cin.getline(s,3,'\n');
for(i=1;i<=n;i++)
{
cin.getline(s,102,'\n');
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')
{
mr[i][j+1]=-1;
mj[i][j+1]=-1;
}
}
}
}
void bordare()
{
int i;
for(i=0;i<=n+1;i++)
mr[i][0]=mr[i][m+1]=mj[i][0]=mj[i][m+1]=-1;
for(i=0;i<=m+1;i++)
mr[0][i]=mr[n+1][i]=mj[0][i]=mj[n+1][i]=-1;
}
void leer()
{
short qx[10003],qy[10003],in,sf,nx,ny,xx,yy,i;
in=sf=1;
qx[1]=xr;
qy[1]=yr;
mr[xr][yr]=1;
while(in<=sf)
{
nx=qx[in];
ny=qy[in];
for(i=1;i<=8;i++)
{
xx=nx+dx[i];
yy=ny+dy[i];
if(mr[xx][yy]==0)
{
sf++;
qx[sf]=xx;
qy[sf]=yy;
mr[xx][yy]=mr[nx][ny]+1;
}
}
in++;
}
}
void leej()
{
int qx[10003],qy[10003],in,sf,nx,ny,xx,yy,i;
in=sf=1;
qx[1]=xj;
qy[1]=yj;
mj[xj][yj]=1;
while(in<=sf)
{
nx=qx[in];
ny=qy[in];
for(i=1;i<=8;i++)
{
xx=nx+dx[i];
yy=ny+dy[i];
if(mj[xx][yy]==0)
{
sf++;
qx[sf]=xx;
qy[sf]=yy;
mj[xx][yy]=mj[nx][ny]+1;
}
}
in++;
}
}
int minim()
{
int i,j,mn,xmn,ymn;
mn=m*n;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
if(mr[i][j]>0 && mr[i][j]==mj[i][j] && mr[i][j]<mn)
{
mn=mr[i][j];
xmn=i;
ymn=j;
}
}
cout<<mn<<" "<<xmn<<" "<<ymn<<"\n";
}
int main()
{
citire();
bordare();
leer();
leej();
minim();
return 0;
}