#include <fstream>
using namespace std;
int n,xm,ym,minn=999999,m,xr,yr,xj,yj,mat[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[100];
in>>n>>m;
int i,j;
char c;
in.getline(sir,100,'\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;
}
}
in.close();
}
int bune(int ii, int jj)
{
return(ii>=0&&ii<n&&jj>=0&&jj<m);
}
int poate(int ii, int jj,int pas)
{
return((mat[ii][jj]==0)||(pas<=mat[ii][jj]));
}
void afisare()
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
out<<mat[i][j]<<" ";
}
out<<"\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(poate(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(poate(ii,jj,pas))
{
if(mat[ii][jj]==pas&&pas<minn)
{
minn=pas;
xm=ii;
ym=jj;
}
mat[ii][jj]=pas;
labirintj (ii,jj,pas+1);
}
}
}
}
int main()
{
citire();
mat[xr][yr]=1;
mat[xj][yj]=0;
labirintr(xr,yr,2);
mat[xj][yj]=1;
labirintj(xj,yj,2);
out<<minn<<" "<<xm+1<<" "<<ym+1;
out.close();
return 0;
}