#include<fstream>
#include<cstring>
using namespace std;
int a[101][101],b[101][101];
typedef struct{int x,y;}COADA;
COADA c[10201],d[10201];
int dx[]={0,0,1,1,1,0,-1,-1,-1};
int dy[]={0,1,1,0,-1,-1,-1,0,1};
void BF(int X1,int Y1,int n,int m,int a[][101])
{
int p,u,i,xn,yn,x,y;
p=u=1;
c[u].x=X1;
c[u].y=Y1;
a[X1][Y1]=1;
while(p<=u)
{
x=c[p].x;
y=c[p].y;
for(i=1;i<=8;i++)
{
xn=x+dx[i];
yn=y+dy[i];
if(xn>=0&&xn<n&&yn>=1&&yn<=m&&a[xn][yn]==0)
{
a[xn][yn]=a[x][y]+1;
c[++u].x=xn;
c[u].y=yn;
}
}
p++;
}
}
int main()
{
ifstream f("rj.in");
ofstream g("rj.out");
int n,m,i,j,ok,p,u,X1,Y1,X2,Y2,x,y,k;
char s[101];
f>>n>>m;
i=0;
while(!f.eof())
{
f.getline(s,101);
j=1;
for(k=0;k<strlen(s);k++)
{
if(s[k]=='X') {a[i][j]=-3;b[i][j]=-3;}
else if(s[k]=='R')
{X1=i; Y1=j;}
else if(s[k]=='J')
{X2=i; Y2=j;}
j++;
}
i++;
}
BF(X1,Y1,n,m,a);
BF(X2,Y2,n,m,b);
int min,mini,minj;
min=10201;
for(i=0;i<n;i++)
for(j=1;j<=m;j++)
if(a[i][j]==b[i][j]&&a[i][j]>0&&a[i][j]<min)
{
min=a[i][j];
mini=i;
minj=j;
}
g<<a[mini][minj]<<" "<<mini<<" "<<minj;
f.close();
g.close();
return 0;
}