#include<fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int R[101][101], J[101][101],lin[]={2,-1,-1,0,+1,+1,+1,0,-1},col[]={2,0,+1,+1,+1,0,-1,-1,-1},qlin[101*101],qcol[101*101],N,M,i,j,lr,cr,lj,cj,minim=9999999,lf,cf;;
void citire(int &N ,int &M, int &lr, int &cr , int &lj , int &cj){
f>>N>>M;
f.get();
for (i = 1;i <= N; i++){
char c;
for (j = 1;j <= M;j++){
f >> noskipws >> c;
switch(c){
case ' ':
R[i][j] = J[i][j] = 0;
break;
case 'R':
R[i][j] = 1;J[i][j] = -1;lr = i;cr = j;
break;
case 'J':
J[i][j] = 1; R[i][j] = -1;lj = i;cj = j;
break;
case 'X':
R[i][j] = J[i][j] = -1;
break;
}
}
f.get();
}
}
void Lee(int a[101][101], int l, int c){
int i,j,p,u;
p = 0;
u = 1;
qlin[u] = l;
qcol[u] = c;
while (p <= u){
p++;
l=qlin[p];
c=qcol[p];
for (i = 1;i <= 8; i++){
int l1 = l+lin[i], c1 = c+col[i];
if (l1>=1 && c1 >= 1 && l1 <= N && c1 <= M && a[l1][c1] == 0 || a[l1][c1] > a[l][c]+1){
a[l1][c1] = a[l][c]+1;
u++;
qlin[u] = l1;
qcol[u] = c1;
}
}
}
}
int main(){
citire(N,M,lr,cr,lj,cj);
Lee(R,lr,cr);
Lee(J,lj,cj);
for (i = 1;i <= N; i++)
for (j = 1;j <= M; j++)
if (R[i][j] == J[i][j] && R[i][j] > 0 && J[i][j]>0 && minim > R[i][j])
minim = R[i][j],lf=i,cf=j;
g << minim << " " << lf << " " << cf;
}