#include<fstream>
#include<iostream>
#define maxn 110
#define maxx 10010
#define maxl 8
using namespace std;
int n, m, l, px, py, i, ir, ij, jj, jr, j, c[maxn][maxn], d[maxn][maxn], sx[maxx], sy[maxx], dirx[maxl]={0,1,1,1,0,-1,-1,-1}, diry[maxl]={-1,-1,0,1,1,1,0,-1};
char a[maxn][maxn], s[maxn], b[5];
void lee(int x,int y,int c[][maxn])
{
int cx, cy;
for (i=1; i<=n; ++i)
for (j=1; j<=m; ++j)
if (a[i][j]=='X')
c[i][j]=-1;
else c[i][j]=maxx;
l=1;
sx[l]=x;
sy[l]=y;
c[x][y]=1;
for (i=1; i<=l; ++i)
for (j=1; j<=maxl; ++j)
{
cx=sx[i]+dirx[j];
cy=sy[i]+diry[j];
if ((cx>0) && (cx<=n) && (cy>=0) && (cy<=m) && (c[sx[i]][sy[i]]+1<c[cx][cy]))
{
l++;
sx[l]=cx;
sy[l]=cy;
c[cx][cy]=c[sx[i]][sy[i]]+1;
}
}
}
int main()
{
ifstream f("rj.in");
ofstream h("rj.out");
f>>n>>m;
f.getline(b, 5);
for (i=1; i<=n; ++i)
{
f.getline(s, 105);
for (j=0; j<m; ++j)
{
a[i][j+1]=s[j];
if (a[i][j+1]=='R')
{
ir=i;
jr=j+1;
}
else
if (a[i][j+1]=='J')
{
ij=i;
jj=j+1;
}
}
}
f.close();
lee (ij, jj, d);
lee (ir, jr, c);
px=0;
py=0;
c[px][py]=maxx;
for (i=1;i<=n;++i)
for (j=1;j<=m;++j)
if ((c[i][j]!=-1) && (c[i][j]==d[i][j]) && (c[i][j]<c[px][py]))
{
px=i;
py=j;
}
h<<c[px][py]<<" "<<px<<" "<<py<<'\n';
h.close();
return 0;
}