#include <stdio.h>
#include <string.h>
#define inf 10000
const int dx[8]={-1,-1,0,1,1,1,0,-1};
const int dy[8]={0,1,1,1,0,-1,-1,-1};
struct nod {int l;int c;} q[10000];
int xr,yr,xj,yj,i,j,pozi,pozj,min,a[101][101],b[101][101],n,m;
void load ()
{char x;
memset (a,-1,sizeof(a));
memset (b,-1,sizeof(b));
scanf ("%d %d\n",&n,&m);
for (i=1; i<=n; i++)
{
for (j=1; j<=m; j++)
{
scanf ("%c",&x);
if (x==' ') {a[i][j]=inf; b[i][j]=inf;}
else if (x=='R') {a[i][j]=1; b[i][j]=inf; xr=i; yr=j;}
else if (x=='J') {b[i][j]=1; a[i][j]=inf; xj=i; yj=j;}
}
scanf ("%c",&x);
}
}
void leer (int xi, int yi)
{int p,u,x,y;
p=1; u=1; q[1].l=xi; q[1].c=yi;
while (p<=u)
{
x=q[p].l;
y=q[p].c;
for (i=0; i<8; i++)
if (a[x+dx[i]][y+dy[i]]==inf)
{
q[++u].l=x+dx[i];
q[u].c=y+dy[i];
a[x+dx[i]][y+dy[i]]=a[x][y]+1;
}
p++;
}
}
void leej (int xi, int yi)
{int p,u,x,y;
p=1; u=1; q[1].l=xi; q[1].c=yi;
while (p<=u)
{
x=q[p].l;
y=q[p].c;
for (i=1; i<=8; i++)
if (b[x+dx[i-1]][y+dy[i-1]]==inf)
{
q[++u].l=x+dx[i-1];
q[u].c=y+dy[i-1];
b[x+dx[i-1]][y+dy[i-1]]=b[x][y]+1;
}
p++;
}
}
int main ()
{
freopen ("rj.in","r",stdin);
freopen ("rj.out","w",stdout);
load ();
leer (xr,yr);
leej (xj,yj);
min=inf;
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]; pozi=i; pozj=j;}
printf ("%d %d %d",a[pozi][pozj],pozi,pozj);
}