#include <stdio.h>
#define MAX 10001
int r[102][102], j[102][102],c[2][MAX],m,n,xr,yr,xj,yj,xsol,ysol;
int dx[8]={1,0,-1,-1,-1,0,1,1},dy[8]={-1,-1,-1,0,1,1,0,1};
FILE *fin,*fout;
void citire()
{
char c;
fin=fopen("rj.in","r");
fscanf(fin,"%d %d\n",&m,&n);
for(int i=1;i<=m;i++)
{
for(int k=1;k<=n;k++)
{
fscanf(fin,"%c",&c);
if(c=='X')
{
r[i][k]=-1;
j[i][k]=-1;
}
else
if(c==' ')
{
r[i][k]=MAX;
j[i][k]=MAX;
}
else
if(c=='R')
{
xr=i; yr=k;
r[i][k]=1;
j[i][k]=MAX;
}
else
if(c=='J')
{
xj=i; yj=k;
r[i][k]=MAX;
j[i][k]=1;
}
}
fscanf(fin,"%c",&c);
}
}
void coadaj()
{
int l,cc,p,u;
p=u=1;
c[0][p]=xj;
c[1][p]=yj;
while(p<=u)
{
l=c[0][p];
cc=c[1][p];
for(int i=0;i<=7;i++)
{
if(j[l+dx[i]][cc+dy[i]]>j[l][cc]+1)
{
u++;
c[0][u]=l+dx[i];
c[1][u]=cc+dy[i];
j[l+dx[i]][cc+dy[i]]=j[l][cc]+1;
}
}
p++;
}
}
void coadar()
{
int p=1,u=1,l,cc;
c[0][p]=xr;
c[1][p]=yr;
while(p<=u)
{
l=c[0][p];
cc=c[1][p];
for(int i=0;i<=7;i++)
{
if(r[l+dx[i]][cc+dy[i]]>r[l][cc]+1)
{
r[l+dx[i]][cc+dy[i]]=r[l][cc]+1;
u++;
c[0][u]=l+dx[i];
c[1][u]=cc+dy[i];
if(j[l+dx[i]][cc+dy[i]]==r[l+dx[i]][cc+dy[i]])
{
xsol=c[0][u];
ysol=c[1][u];
return ;
}
}
}
p++;
}
}
void afisare()
{
fout=fopen("rj.out","w");
fprintf(fout,"%d %d %d",r[xsol][ysol],xsol,ysol);
fclose(fout);
}
int main()
{
citire();
coadaj();
for(int i=1;i<=m;i++)
coadar();
printf("\n");
afisare();
}