#include <fstream>
#include <cstring>
using namespace std;
ifstream y("rj.in");
ofstream w("rj.out");
bool limite (int x, int y, int n, int m){
if (x >= 1 && x <= n && y >=1 && y <= m)
return true;
return false;
}
int m,n,x1,y1,x2,y2,X,Y,P,l,cc,b[101][101],c[101][101],s,f;
const int dx[8] = {-1,1,0,0,1,-1,1,-1};
const int dy[8] = {0,0,-1,1,1,-1,-1,1};
int main()
{
y>>n>>m;
struct {
int x,y,p;
}Q[10202];
char str[101];
y.getline(str,101);
for (int i = 1; i <= n; i++)
{
y.getline(str,101);
for (int j = 0; j < strlen(str); j++)
{
if (str[j] == ' ')
b[i][j+1] = 999,c[i][j+1]=999;
else if (str[j] == 'X')
b[i][j+1] = -1,c[i][j+1]=-1;
else
if (str[j]=='R')
x1=i,y1=j+1,b[i][j+1]=1;
else if(str[j]=='J')
x2=i,y2=j+1,c[i][j+1]=1;
}
if (strlen(str) < m)
for (int j = strlen(str)+1; j <=m; j++)
b[i][j] = 999,c[i][j]=999;
}
//ROMEO
Q[1].x=x1;
Q[1].y=y1;
Q[1].p=1;
s=1;f=2;
while(s<=f)
{
X=Q[s].x;
Y=Q[s].y;
P=Q[s].p;
for (int i = 0; i < 8; i++)
if (b[X+dx[i]][Y+dy[i]] == 999 && limite(X+dx[i],Y+dy[i],n,m) ){
Q[f].x = X + dx[i];
Q[f].y = Y + dy[i];
Q[f].p = P + 1;
b[X + dx[i]][Y + dy[i]]=P+1;
f++;
}
s++;
}
// JULIETA
Q[1].x=x2;
Q[1].y=y2;
Q[1].p=1;
s=1;f=2;
while(s<=f)
{
X=Q[s].x;
Y=Q[s].y;
P=Q[s].p;
for (int i = 0; i < 8; i++)
if (c[X+dx[i]][Y+dy[i]] == 999 && limite(X+dx[i],Y+dy[i],n,m) ){
Q[f].x = X + dx[i];
Q[f].y = Y + dy[i];
Q[f].p = P + 1;
c[X + dx[i]][Y + dy[i]]=P+1;
f++;
}
s++;
}
int mini=999999;
for(int i=1; i<=n;i++)
for(int j=1;j<=m;j++)
if(b[i][j]==c[i][j] && b[i][j]>0)
if(b[i][j] < mini)
{
mini=b[i][j];
l=j;
cc=i;
}
w << mini << ' ' <<cc<< ' '<<l;
return 0;
}