#include <fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int R[105][105], J[105][105],m,n,xr,yr,xj,yj,minn=10000,xmin,ymin;
void comparare()
{
int i,j;
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
if(R[i][j]==J[i][j] && R[i][j]>0)
if(R[i][j]<minn)
{
minn=R[i][j];
xmin=i;
ymin=j;
}
}
void lee(int xi, int yi, int a[][105])
{
int c[100005][2],dx[]= {0,-1,-1,0,1,1,1,0,-1}, dy[]= {0,0,-1,-1,-1,0,1,1,1}, x,y,xx,yy,p,u,i;
p=u=1;
c[1][0]=xi;
c[1][1]=yi;
a[xi][yi]=1;
while(p<=u)
{
x=c[p][0];
y=c[p][1];
for(i=1; i<=8; i++)
{
xx=x+dx[i];
yy=y+dy[i];
if(a[xx][yy]==0 && xx<=n && xx>=1 && yy<=m && yy>=1)
{
a[xx][yy]=a[x][y]+1;
u++;
c[u][0]=xx;
c[u][1]=yy;
}
}
p++;
}
}
void citire ()
{
int i,j;
char s[105];
f>>n>>m;
f.get();
for(i=1; i<=n; i++)
{
f.getline(s, sizeof s);
for(j=0; j<m; j++)
if(s[j]=='X')
{
R[i][j+1]=-1;
J[i][j+1]=-1;
}
else if(s[j]=='R')
{
xr=i;
yr=j+1;
}
else if(s[j]=='J')
{
xj=i;
yj=j+1;
}
}
}
int main()
{
int i,j;
citire();
lee(xr,yr,R);
lee(xj,yj,J);
comparare();
g<<minn<<' '<<xmin<<' '<<ymin;
return 0;
}