#include <iostream>
#include <stdio.h>
#include <queue>
using namespace std;
FILE *f=fopen("rj.in","r");
FILE *g=fopen("rj.out","w");
int n,m,a[101][101],b[101][101],r1,r2,jul1,jul2,dir=8,ok,mini=99999;
const int dx[]={-1,-1,0,1,1,1,0,-1};
const int dy[]={0,1,1,1,0,-1,-1,-1};
struct coada
{
int xx,yy;
};
queue <coada> q;
coada loc;
void lee(int d[101][101])
{
while(!(q.empty()))
{
for(int u=0;u<dir;u++)
{
int x1=q.front().xx+dx[u],y1=q.front().yy+dy[u];
if(x1>=0 && x1<n && y1>=0 && y1<m)
{
if(d[x1][y1]==0)
{
d[x1][y1]=d[q.front().xx][q.front().yy]+1;
coada aux;
aux.xx=x1;
aux.yy=y1;
q.push(aux);
}
if(ok==1)
if(d[q.front().xx][q.front().yy]==a[q.front().xx][q.front().yy])
if(d[q.front().xx][q.front().yy]<mini)
{
mini=d[q.front().xx][q.front().yy];
loc.xx=q.front().xx;
loc.yy=q.front().yy;
}
}
}
q.pop();
}
}
int main()
{
char t;
fscanf(f,"%d%d",&n,&m);
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
fscanf(f,"%c",&t);
if(t=='\n')
fscanf(f,"%c",&t);
if(t=='X')
a[i][j]=-1,b[i][j]=-1;
else if(t=='R')
{
r1=i;
r2=j;
}
else if(t=='J')
{
jul1=i;
jul2=j;
}
}
coada aux;
aux.xx=r1;
aux.yy=r2;
q.push(aux);
a[r1][r2]=1;
lee(a);
aux.xx=jul1;
aux.yy=jul2;
q.push(aux);
b[jul1][jul2]=1;
ok=1;
lee(b);
fprintf(g,"%d %d %d",mini,loc.xx+1,loc.yy+1);
return 0;
}