#include <fstream>
using namespace std;
ofstream out("rj.out");
void citire (int &n, int &m, int mr[][100], int mj[][100], int &xr, int &yr, int &xj, int &yj)
{
int i,j;
char sir[101];
ifstream in("rj.in");
in>>n>>m;
in.get();
for(i=0;i<n;i++)
{
in.getline(sir,101,'\n');
for(j=0;j<m;j++)
{
mr[i][j]=0;
mj[i][j]=0;
if(sir[j]=='X') {mr[i][j]=1; mj[i][j]=1;}
if(sir[j]=='R') {xr=i; yr=j;}
if(sir[j]=='J') {xj=i; yj=j;}
}
}
in.close();
}
int bune(int ii, int jj, int n, int m)
{
return (ii>=0 and ii<n and jj>=0 and jj<m);
}
void rj(int n, int m, int mat[][100], int x, int y)
{
int k, cx[10000], cy[10000], ii, jj, pi, ps, pas;
int dx[]={-1,-1,0,1,1,1,0,-1};
int dy[]={0,1,1,1,0,-1,-1,-1};
mat[x][y]=1;
cx[0]=x;
cy[0]=y;
pi=0;
ps=0;
while(pi<=ps)
{
x=cx[pi];
y=cy[pi];
for(k=0;k<8;k++)
{
ii=x+dx[k];
jj=y+dy[k];
if(bune(ii,jj,n,m))
{
pas=mat[x][y]+1;
if(mat[ii][jj]==0)
{
mat[ii][jj]=pas;
ps++;
cx[ps]=ii;
cy[ps]=jj;
}
}
}
pi++;
}
}
int main()
{
int n,m,mr[100][100],mj[100][100],xr,yr,xj,yj,i,j,x=0,y=0,mi;
citire(n,m,mr,mj,xr,yr,xj,yj);
rj(n,m,mr,xr,yr);
rj(n,m,mj,xj,yj);
mi=10000;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(mr[i][j]==mj[i][j] and mr[i][j]>1 and mr[i][j]<mi)
{
mi=mr[i][j];
x=i;
y=j;
}
}
}
out<<mi<<" "<<x+1<<" "<<y+1;
out.close();
return 0;
}