#include <fstream>
#include <cstring>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int dx[]={0,-1,-1,0,1,1,1,0,-1},dy[]={0,0,1,1,1,0,-1,-1,-1};
int i,j,n,m,a[101][101],b[101][101],d1[101][101],d2[101][101],q[10001][2],x1,x2,y1,y2,mini,px,py;
char S[101];
void coada(int x,int y,int ok){
int p=0,u=0;
memset(b,0,sizeof(b));
q[p][0]=x;
q[p][1]=y;
b[x][y]=1;
while(p<=u){
int l=q[p][0];
int c=q[p][1];
p++;
for(int k=1;k<=8;k++){
int ln=l+dx[k];
int cn=dy[k]+c;
if(ln>=1&&ln<=n&&cn>=1&&cn<=m)
if(a[ln][cn]==0&&b[ln][cn]==0){
q[++u][0]=ln;
q[u][1]=cn;
b[ln][cn]=1;
if(ok==0){
d1[ln][cn]=d1[l][c]+1;
}
else
d2[ln][cn]=d2[l][c]+1;
}
}
}
}
int main()
{ f>>n>>m;
f.get();
for(i=1;i<=n;i++){
f.getline(S,101);
for(j=0;S[j]!=0;j++)
if(S[j]=='X')
a[i][j+1]=1;
else
if(S[j]=='R'){
x1=i;
y1=j+1;
}
else
if(S[j]=='J'){
x2=i;
y2=j+1;
}
}
mini=100001;
coada(x1,y1,0);
coada(x2,y2,1);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(d1[i][j]==d2[i][j]&&mini>d1[i][j]&&a[i][j]==0&&d1[i][j]>0){
mini=d1[i][j];
px=i;py=j;
}
g<<mini+1<<' '<<px<<' '<<py;
return 0;
}