#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
struct Element
{
int l,c;
unsigned d;
};
Element c[100*100+1],x,y;
char ch[101];
int n,m,i,j,inc,sf,a[102][102],b[102][102],dl[]={-1,-1,0,1,1,1,0,-1},dc[]={0,1,1,1,0,-1,-1,-1},xr,yr,xj,yj,h,lin,col,nr,Min;
int main()
{
fin>>n>>m;
fin.get();
for(i=1;i<=n;i++)
{
fin.getline(ch,101);
// cout<<ch<<"\n";
for(j=0;j<m;j++)
{
if(ch[j]=='X')
a[i][j+1]=-1;
else if(ch[j]=='R')
a[i][j+1]=-3;//romeo
else if(ch[j]=='J')
a[i][j+1]=-4;//jilieta
if(a[i][j]==0)
a[i][j]=-2;
if(a[i][j]==-3)
xr=i,yr=j+1;
else if(a[i][j]==-4)
xj=i,yj=j+1;
b[i][j]=a[i][j];
}
}
for(i=0;i<=n;i++) a[i][0]=a[i][m+1]=-1;
for(i=0;i<=m+1;i++) a[0][i]=a[n+1][i]=-1;
x.l=xr; x.c=yr; x.d=1; c[inc]=x; a[xr][yr]=1;
while(inc<=sf)
{
x=c[inc++];
for(i=0;i<8;i++)
{
y.l=x.l+dl[i];
y.c=x.c+dc[i];
if(a[y.l][y.c]==-2)
{
y.d=x.d+1;
a[y.l][y.c]=y.d;
c[++sf]=y;
}
}
}
inc=sf=0;
x.l=xj; x.c=yj; x.d=1; c[inc]=x; a[xj][yj]=1;
while(inc<=sf)
{
x=c[inc++];
for(i=0;i<8;i++)
{
y.l=x.l+dl[i];
y.c=x.c+dc[i];
if(b[y.l][y.c]==-2)
{
y.d=x.d+1;
b[y.l][y.c]=y.d;
c[++sf]=y;
if(a[y.l][y.c]==b[y.l][y.c])
if(nr==0)
{
Min=b[y.l][y.c];
lin=y.l,col=y.c,nr=b[y.l][y.c];
}
else if(b[y.l][y.c]<Min)
{
Min=b[y.l][y.c];
lin=y.l,col=y.c,nr=b[y.l][y.c];
}
else if(b[y.l][y.c]==Min)
{
if(y.l<lin)
{
lin=y.l,col=y.c,nr=b[y.l][y.c];
}
else if(y.l==lin)
if(y.c<col)
{
lin=y.l,col=y.c,nr=b[y.l][y.c];
}
}
}
}
}
fout<<nr<<" "<<lin<<" "<<col;
return 0;
}