#include <fstream>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
short int i,j,n,m,lr,cr,lj,cj;
int dx[]={0,-1,-1,0,1,1,1,0,-1},dy[]={0,0,1,1,1,0,-1,-1,-1},a[101][101],b[101][101];
int Min,linie,coloana;
bool v[101][101];
char s[101];
struct numar{
int l,c;
}q[10005];
void romeo(int i, int j){
int p,u,l,c,lnou,cnou,k;
p=u=1;
q[1].l=i;
q[1].c=j;
b[i][j]=1;
while(p<=u){
l=q[p].l;
c=q[p].c;
for(k=1;k<=8;k++){
lnou=l+dx[k];
cnou=c+dy[k];
if(v[lnou][cnou]==0 && lnou>=1 && lnou<=n && cnou>=1 && cnou<=m && b[lnou][cnou]==0){
q[++u].l=lnou;
q[u].c=cnou;
b[lnou][cnou]=b[l][c]+1;
}
}
p++;
}
}
void julieta(int i, int j){
int p,u,l,c,lnou,cnou,k;
p=u=1;
q[1].l=i;
q[1].c=j;
a[i][j]=1;
while(p<=u){
l=q[p].l;
c=q[p].c;
for(k=1;k<=8;k++){
lnou=l+dx[k];
cnou=c+dy[k];
if(v[lnou][cnou]==0 && lnou>=1 && lnou<=n && cnou>=1 && cnou<=m && a[lnou][cnou]==0){
q[++u].l=lnou;
q[u].c=cnou;
a[lnou][cnou]=a[l][c]+1;
}
}
p++;
}
}
int main()
{
fin>>n>>m;
fin.get();
for(i=1;i<=n;i++){
fin.getline(s,100);
for(j=0;s[j]!=0;j++)
if(s[j]=='X')
v[i][j+1]=1;
else
if(s[j]=='R'){
lr=i;
cr=j+1;
b[i][j+1]=1;
}
else
if(s[j]=='J'){
lj=i;
cj=j+1;
a[i][j+1]=1;
}
}
romeo(lr,cr);
julieta(lj,cj);
Min=10010;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]==b[i][j] && a[i][j]!=0 && v[i][j]!=1 && a[i][j]<Min){
Min=a[i][j];
linie=i;
coloana=j;
}
fout<<Min<<" "<<linie<<" "<<coloana;
return 0;
}