#include <fstream>
using namespace std;
int n,xm,ym,minn=999999,m,xr,yr,xj,yj,mat[100][100],matt[100][100],dx[]={-1,-1,0,1,1,1,0,-1},dy[]={0,1,1,1,0,-1,-1,-1};
ofstream out("rj.out");
void citire()
{
ifstream in("rj.in");
char sir[101];
in>>n>>m;
int i,j;
char c;
in.getline(sir,101,'\n');
for(i=0;i<n;i++)
{
in.getline(sir,100,'\n');
for(j=0;j<m;j++)
{
c=sir[j];
if(c=='R')
{
xr=i;
yr=j;
}
if(c=='J')
{
xj=i;
yj=j;
}
if (c=='X')
{
mat[i][j]=1;
matt[i][j]=1;
}
}
}
in.close();
}
int bune(int ii, int jj)
{
return(ii>=0&&ii<n&&jj>=0&&jj<m);
}
int poater(int ii, int jj,int pas)
{
return((mat[ii][jj]==0)||(pas<mat[ii][jj]));
}
int poatej(int ii, int jj,int pas)
{
return((matt[ii][jj]==0)||(pas<matt[ii][jj]));
}
void afisare(int mat[][100])
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
out<<mat[i][j]<<" ";
}
out<<"\n";
}
}
void verificare()
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if ((mat[i][j]==matt[i][j])&&(mat[i][j]>1))
{
if(mat[i][j]<minn)
{
minn=mat[i][j];
xm=i;
ym=j;
}
}
}
}
out<<minn<<" "<<xm+1<<" "<<ym+1<<"\n";
}
void labirintr(int i,int j,int pas)
{
int ii,jj,k;
for(k=0;k<8;k++)
{
ii=i+dx[k];
jj=j+dy[k];
if(bune(ii,jj))
{
if(poater(ii,jj,pas))
{
mat[ii][jj]=pas;
labirintr(ii,jj,pas+1);
}
}
}
}
void labirintj (int i,int j,int pas)
{
int ii,jj,k;
for(k=0;k<8;k++)
{
ii=i+dx[k];
jj=j+dy[k];
if(bune(ii,jj))
{
if(poatej(ii,jj,pas))
{
matt[ii][jj]=pas;
labirintj(ii,jj,pas+1);
}
}
}
}
int main()
{
citire();
mat[xr][yr]=1;
labirintr(xr,yr,2);
// afisare(mat);
matt[xj][yj]=1;
labirintj(xj,yj,2);
verificare();
//out<<"\n";
// afisare(matt);
out.close();
return 0;
}