#include <fstream>
#include <iomanip>
#include <queue>
using namespace std;
ifstream fi("rj.in");
ofstream fo("rj.out");
int n,m,x,y,i,j,xr,yr,xj,yj,xmin=-1,ymin=-1,mini=102*102+5;
int R[102][102],J[102][102];
char c;
char C[101][101];
queue <pair <int,int> > Q;
void lee(int A[102][102], int l, int c)
{
int DI[8]={-1,-1,0,1,1,1,0,-1},DJ[8]={0,1,1,1,0,-1,-1,-1};
for(i=0;i<=n+1;i++)
A[i][0]=A[i][m+1]=-1;
for(j=0;j<=m+1;j++)
A[0][j]=A[n+1][j]=-1;
A[l][c]=1;
Q.push(make_pair(l,c));
while(!Q.empty())
{
x=Q.front().first;
y=Q.front().second;
for(i=0;i<8;i++)
if(A[x+DI[i]][y+DJ[i]]==0)
{
Q.push(make_pair(x+DI[i],y+DJ[i]));
A[x+DI[i]][y+DJ[i]]=A[x][y]+1;
}
Q.pop();
}
}
int main()
{
fi>>n>>m;
for(i=1;i<=n;i++)
{
fi.get(c);
for(j=1;j<=m;j++)
{
fi.get(c);
switch(c)
{
case ' ': R[i][j]=J[i][j]=0; break;
case 'X': R[i][j]=J[i][j]=-1; break;
case 'R': xr=i,yr=j; J[i][j]=0; break;
case 'J': xj=i,yj=j; R[i][j]=0;
}
}
}
lee(R,xr,yr);
lee(J,xj,yj);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(R[i][j]==J[i][j]&&R[i][j]!=-1&&R[i][j]!=0)
if(R[i][j]<mini)
{
mini=R[i][j];
xmin=i;
ymin=j;
}
fo<<mini<<' '<<xmin<<' '<<ymin;
fi.close();
fo.close();
return 0;
}