#include <fstream>
#include<algorithm>
using namespace std;
ifstream cin("rj.in");
ofstream cout("rj.out");
struct gutza{
int l,c;
};
gutza c[1000005];
int i,n,dl[]={-1,0,1,0,1,-1,-1,1,1},dc[]={0,1,0,-1,-1,1,-1,-1,1},m,j,i_1,i_2,j_1,j_2,ju[1005][1005],r[1005][1005],ri,rj,ji,jj,l,k,minim,x,y;
char a[1005][1005],car[101];
void lee(int i_1,int j_1, int r[1005][1005]){
int p=1,u=1,l1,l2,c1,c2;
c[p].l=i_1;
c[p].c=j_1;
r[i_1][j_1]=1;
while(p<=u){
l1=c[p].l;
c1=c[p].c;
p++;
for(i=0;i<9;i++){
l2=l1+dl[i];
c2=c1+dc[i];
if(r[l2][c2]==0){
u++;
c[u].l=l2;
c[u].c=c2;
r[l2][c2]=1+r[l1][c1];
}
}
}
}
int main()
{
cin>>n>>m; cin.get();
for(i=0;i<=n+1;i++){
for(j=0;j<=m+1;j++){
r[i][j]=ju[i][j]=-1;
}
}
for(i=1;i<=n;i++){
cin.getline(car,101);
for(j=1;j<=m;j++){
switch(car[j-1]){
case ' ': r[i][j]=ju[i][j]=0;break;
case 'R': r[i][j]=1;ju[i][j]=0;ri=i;rj=j;break;
case 'J': r[i][j]=0;ju[i][j]=1;ji=i;jj=j;break;
case 'X': r[i][j]=ju[i][j]=-1;break;
}
}
}
lee(ri,rj,r);
lee(ji,jj,ju);
minim=100000;
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
if(ju[i][j]==r[i][j] && ju[i][j]>0){
if(r[i][j]<minim){
minim=r[i][j];
x=i;
y=j;
}
}
}
}
cout<<minim<<" "<<x<<" "<<y;
return 0;
}