#include<iostream>
#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':
R[i][j] = 1;
J[i][j] = -1;
lr = i;
cr=i;
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;
default:
R[i][j] = J[i][j] = 0;
break;
}
}
f.get();
}
}
void Lee(int a[101][101], int l, int c){
int i,j,p,u;
p=u=0;
u++;
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)
if (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;
}