#include <iostream>
#include <cstdio>
#include <cstring>
#include <fstream>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int a[103][103],b[103][103],n,m,xr,yr,xj,yj;
int dx[]={-1,-1,-1,0,0,1,1,1};
int dy[]={-1,0,1,-1,1,-1,0,1};
struct coord{int x,y;}c[1001];
void citire()
{
fin>>n>>m;
int i,j;
char c,p;
fin.get(c);
for(i=1;i<=n;++i)
{
j=0;
do
{
++j;
fin.get(c);
if(c=='R') {xr=i;yr=j;}
else if(c=='J') {xj=i;yj=j;}
else if(c=='X') {a[i][j]=-1;b[i][j]=-1;}
}while(c!='\n');
}
}
int interior(int x,int y)
{
return (x>=1&&x<=n&&y>=1&&y<=m);
}
void lee(int a[][103], int x, int y)
{
int p,u,i,xv,yv;
p=u=1;
c[u].x=x;
c[u].y=y;
a[x][y]=1;
while(p<=u)
{
x=c[p].x;
y=c[p++].y;
for(i=0;i<=7;++i)
{
xv=x+dx[i];
yv=y+dy[i];
if(interior(xv,yv)&&a[xv][yv]==0)
{
a[xv][yv]=a[x][y]+1;
c[++u].x=xv;
c[u].y=yv;
}
}
}
}
int main()
{
citire();
int i,j,Min=1003,px=0,py=0;
lee(a,xr,yr);
lee(b,xj,yj);
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
if(a[i][j]==b[i][j]&&a[i][j]<Min&&a[i][j]>1)
{
Min=a[i][j];
px=i;
py=j;
}
fout<<Min<<' '<<px<<' '<<py;
return 0;
}