#include <fstream>
#include <iostream>
using namespace std;
ofstream fout("rj.out");
int n,m,matR[100][100],matJ[100][100],xr,yr,xj,yj,x[10000],y[10000];
const int dx[]={-1,-1,0,1,1,1,0,-1};
const int dy[]={0,1,1,1,0,-1,-1,-1};
void citire()
{
int i,j;
char sir[101];
ifstream fin("rj.in");
fin>>n>>m;
fin.get();
for(i=0;i<n;i++)
{
fin.getline(sir,101,'\n');
for(j=0;j<m;j++)
{
if(sir[j]=='R')
{
matR[i][j]=1;
xr=i;
yr=j;
}
if(sir[j]=='J')
{
matJ[i][j]=1;
xj=i;
yj=j;
}
if(sir[j]=='X')
{
matR[i][j]=1;
matJ[i][j]=1;
}
}
}
fin.close();
}
int bune(int i, int j)
{
return((i<n)&&(i>=0)&&(j<m)&&(j>=0));
}
void leec(int mat[][100],int first, int last)
{
int ii,jj,k,pas;
while(first<=last)
{
for(k=0;k<8;k++)
{
ii=x[first]+dx[k];
jj=y[first]+dy[k];
pas=mat[x[first]][y[first]];
if(bune(ii,jj)==1)
{
if((mat[ii][jj]==0)||(mat[ii][jj]>pas+1))
{
pas=pas+1;
mat[ii][jj]=pas;
last=last+1;
x[last]=ii;
y[last]=jj;
}
}
}
first=first+1;
}
}
int main()
{
citire();
int first,last,minim,xf,yf,i,j;
first=0;
last=0;
x[0]=xr;
y[0]=yr;
leec(matR,first,last);
first=0;
last=0;
x[0]=xj;
y[0]=yj;
leec(matJ,first,last);
minim=10000;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(matR[i][j]==matJ[i][j])
if(matR[i][j]>1)
if(matR[i][j]<minim)
{
minim=matR[i][j];
xf=i;
yf=j;
}
fout<<minim<<" "<<xf+1<<" "<<yf+1;
fout.close();
return 0;
}