#include <fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
struct punct {int l,c;} c[10404],v;
int dl[8]={0, 1, 0, -1, -1, 1, -1, 1},dc[8]={1, 0, -1, 0, -1, 1, 1,-1};
char a[102][102];
int r[102][102],j[102][102],xr,yr,xj,yj,n,m;
void citire ()
{ int i,k;
char c;
f>>n>>m;
for (i=0;i<=n+1;i++)
a[i][0]=a[i][m+1]='X';
for (k=0;k<=m+1;k++)
a[0][k]=a[n+1][k]='X';
f.get(c);
for (i=1;i<=n;i++)
{ for (k=1;k<=m;k++)
{f.get(c);
a[i][k]=c;
if (a[i][k]=='R') {xr=i;yr=k;a[i][k]=' ';}
if (a[i][k]=='J') {xj=i;yj=k;a[i][k]=' ';}
}
f.get(c);
}
f.close ();
}
void lee (int x0,int y0,int d[102][102])
{ int p=0,u=0,i,k,l1,c1;
for (i=0;i<=n+1;i++)
for (k=0;k<=m+1;k++)
d[i][k]=-1;
c[0].l=x0;
c[0].c=y0;
d[x0][y0]=1;
while (p<=u)
{ v=c[p];
for (i=0;i<=7;i++)
{ l1=v.l+dl[i];
c1=v.c+dc[i];
if (a[l1][c1]==' '&&d[l1][c1]==-1)
{ d[l1][c1]=1+d[v.l][v.c];
c[++u].l=l1;
c[u].c=c1;
}
}
p++;
}
}
void afisare (int j[102][102])
{ int tmin=10409,xmin=-1,ymin=-1,i,k;
for (i=1;i<=n;i++)
for (k=1;k<=m;k++)
if (r[i][k]==j[i][k])
if (r[i][k]<tmin && r[i][k]!=-1)
{ tmin=r[i][k];
xmin=i;
ymin=k;
}
g<<tmin<<' '<<xmin<<' '<<ymin;
}
int main()
{
citire ();
lee(xr,yr,r);
lee(xj,yj,j);
afisare(j);
return 0;
}