#include <iostream>
#include <stdio.h>
using namespace std;
struct ura {
int l, c;
};
int a[102][102], b[102][102];
int lin[8]={-1,-1,0,1,1,1,0,-1}, col[8]={0,1,1,1,0,-1,-1,-1};
ura v[10001];
int main() {
FILE *fin, *fout;
int n, m, i, j, ix, iy, fx, fy, in, sf, lc, cc;
char ch;
fin=fopen("rj.in","r");
fout=fopen("rj.out","w");
fscanf(fin, "%d%d",&n,&m);
fscanf(fin, "%c",&ch);
for(i=0;i<=n+1;i++)
a[i][0]=a[i][m+1]=b[i][0]=b[i][m+1]=-1;
for(i=0;i<=m+1;i++)
a[0][i]=a[n+1][i]=b[0][i]=b[n+1][i]=-1;
for(i=1;i<=n;i++) {
for(j=1;j<=m;j++) {
fscanf(fin, "%c",&ch);
if(ch=='X')
a[i][j]=b[i][j]=-1;
if(ch=='R') {
ix=i;
iy=j;
}
if(ch=='J') {
fx=i;
fy=j;
}
}
fscanf(fin, "%c",&ch);
}
v[1].l=ix;
v[1].c=iy;
in=sf=1;
while(in<=sf) {
for(i=0;i<8;i++) {
lc=v[in].l+lin[i];
cc=v[in].c+col[i];
if(a[lc][cc]==0) {
sf++;
v[sf].l=lc;
v[sf].c=cc;
a[lc][cc]=a[v[in].l][v[in].c]+1;
}
}
in++;
}
a[ix][iy]=0;
for(i=0;i<=in;i++) {
v[i].l=0;
v[i].c=0;
}
v[1].l=fx;
v[1].c=fy;
in=sf=1;
while(in<=sf) {
for(i=0;i<8;i++) {
lc=v[in].l+lin[i];
cc=v[in].c+col[i];
if(b[lc][cc]==0 && (lc!=fx || cc!=fy)) {
sf++;
v[sf].l=lc;
v[sf].c=cc;
b[lc][cc]=b[v[in].l][v[in].c]+1;
}
}
in++;
}
b[fx][fy]=0;
in=2000000000;
lc=cc=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]==b[i][j] && a[i][j]!=-1 && a[i][j]!=0 && a[i][j]<in) {
in=a[i][j];
lc=i;
cc=j;
}
fprintf(fout, "%d %d %d",in+1,lc,cc);
fclose( fin );
fclose( fout );
return 0;
}