#include <stdio.h>
#define nmax 101
#define cmax 100000
#define inf 100001
using namespace std;
int dx[]={-1,-1,0,1,1,1,0,-1},dy[]={0,1,1,1,0,-1,-1,-1};
struct elem
{int l,c,d; }cr[cmax],cj[nmax];
int a[nmax][nmax],n,m;
void read(void)
{FILE *fin=fopen("rj.in","r");
int i,j;
char k;
fscanf(fin,"%d%d",&n,&m);
for(i=1;i<=n;i++)
{fscanf(fin,"%c",&k);
for(j=1;j<=m;j++)
{fscanf(fin,"%c",&k);
if(k=='X') a[i][j]=inf;
else if(k=='R'||k=='J')
if(k=='R')cr[0].l=i, cr[0].c=j, cr[0].d=1, a[i][j]=1;
else cj[0].l=i, cj[0].c=j, cj[0].d=-1, a[i][j]=-1;
}
}
fclose(fin);
}
void bord(void)
{int i;
for(i=1;i<=n;i++) a[i][0]=a[i][m+1]=inf;
for(i=1;i<=m;i++) a[0][i]=a[m+1][i]=inf;
}
void solve_write(void)
{int ic1=0,sf1=0,ic2=0,sf2=0,k,ok=0;
FILE *fout=fopen("rj.out","w");
elem x,y;
x=cr[0]; a[x.l][x.c]=1;
x=cj[0]; a[x.l][x.c]=-1;
while(!ok)
{x=cr[ic1++];
for(k=0;k<8;k++)
{y.l=x.l+dx[k]; y.c=x.c+dy[k]; y.d=x.d+1;
if(a[y.l][y.c]==0) cr[++sf1]=y, a[y.l][y.c]=y.d;
}
x=cj[ic2++];
for(k=0;k<8;k++)
{y.l=x.l+dx[k]; y.c=x.c+dy[k]; y.d=x.d-1;
if(a[y.l][y.c]==-y.d)
{ok=1; break; }
if(a[y.l][y.c]==0) cj[++sf2]=y, a[y.l][y.c]=y.d;
}
}
fprintf(fout,"%d %d %d",-y.d,y.l,y.c);
fclose(fout);
}
int main(void)
{read();
bord();
solve_write();
return 0;
}