#include<stdio.h>
#include<string.h>
int vec[105][105],vec2[105][105],InC,SfC;
char buffer[105];
const int dx[9]={0,0,1,0,-1,1,-1,-1,1};
const int dy[9]={0,-1,0,1,0,1,1,-1,-1};
typedef struct
{
int l,c;
}Element;
typedef Element Coada[10100];
Coada C;
Element x,y;
int n=0,m=0,xr,yr,xj,yj;
char c;
void citeste()
{
freopen("rj.in","r",stdin);
fgets(buffer,114,stdin);
int ok=0;
for(int i=0;i<=strlen(buffer)-2;i++)
{
if(buffer[i]==' ') ok=1;
else if(ok==0) n=n*10+(buffer[i]-'0');
else if(ok==1) m=m*10+(buffer[i]-'0');
}
for(int i=1;i<=n;i++){
fgets(buffer,114,stdin);
for(int j=1;j<=m;j++){
if(buffer[j-1]=='R') xr=i,yr=j,vec[i][j]=1,vec2[i][j]=-1;
if(buffer[j-1]=='J') xj=i,yj=j,vec[i][j]=-1,vec2[i][j]=1;
if(buffer[j-1]==' ') vec[i][j]=-2,vec2[i][j]=-2;
if(buffer[j-1]=='X') vec2[i][j]=-1,vec[i][j]=-1;
}
}
}
void lee()
{
x.l=xr,x.c=yr;
int k;
InC=SfC=0;
C[InC]=x;
while(InC<=SfC)
{
x=C[InC++];
for(k=1;k<=8;k++)
{
y.l=x.l+dx[k],y.c=x.c+dy[k];
if(vec[y.l][y.c]==-2)
{
vec[y.l][y.c]=vec[x.l][x.c]+1;
C[++SfC]=y;
}
}
}
}
void lee2()
{
x.l=xj,x.c=yj;
int k;
InC=SfC=0;
C[InC]=x;
while(InC<=SfC)
{
x=C[InC++];
for(k=1;k<=8;k++)
{
y.l=x.l+dx[k],y.c=x.c+dy[k];
if(vec2[y.l][y.c]==-2)
{
vec2[y.l][y.c]=vec2[x.l][x.c]+1;
C[++SfC]=y;
}
}
}
}
int main()
{
citeste();
lee();
lee2();
int min=12000,xmin,ymin;
freopen("rj.out","w",stdout);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
if(vec[i][j]>=0 && vec[i][j]==vec2[i][j])
if(vec[i][j]<min) min=vec[i][j],xmin=i,ymin=j;
}
printf("%d %d %d",min,xmin,ymin);
}