#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
const int dx[]={-1,-1,0,1,1,1,0,-1};
const int dy[]={0,1,1,1,0,-1,-1,-1};
void citire(int &n, int &m, int R[][101],int J[][101], int &lr,int &cr, int &lj, int &cj)
{
ifstream in("rj.in");
char linie[101]; int i,j;
in>>n>>m;
in.get();
for(i=1;i<=n;i++)
{
in.getline(linie,101,'\n');
for(j=0;j<m;j++)
{
if(linie[j]=='R') {lr=i; cr=j+1;}
if(linie[j]=='J') {lj=i; cj=j+1;}
if(linie[j]=='X') {R[i][j+1]=J[i][j+1]=-1;}
if(linie[j]==' ') {R[i][j+1]=J[i][j+1]=0;}
}
}
in.close();
}
bool bune(int i, int j, int n, int m)
{
return (i>0 and i<=n and j>0 and j<=m);
}
void rec(int n, int m, int R[][101],int i, int j, int pas)
{
int ii, jj,k;
for(k=0;k<8;k++)
{
ii=i+dx[k]; jj=j+dy[k];
if(bune(ii,jj,n,m))
if(R[ii][jj]==0 or R[ii][jj]>pas)
{
R[ii][jj]=pas;
rec(n,m,R,ii,jj,pas+1);
}
}
}
void min_afis(int n, int m, int R[][101],int J[][101])
{
int i,j,minn=10001,ii,jj;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(R[i][j]==J[i][j])
if(R[i][j]>0)
if(R[i][j]<minn)
{
minn=R[i][j];
ii=i; jj=j;
}
}
ofstream out("rj.out");
out<<minn<<" "<<ii<<" "<<jj;
}
int main()
{
int n,m,R[101][101],J[101][101],lr,cr,lj,cj;
citire(n,m,R,J,lr,cr,lj,cj);
R[lr][cr]=1; R[lj][cj]=0;
rec(n,m,R,lr,cr,2);
J[lj][cj]=1; J[lr][cr]=0;
rec(n,m,J,lj,cj,2);
min_afis(n,m,R,J);
return 0;
}