#include<stdio.h>
#define DIM 120
int dx[8]={0,0,-1,1,-1,1,-1,1};
int dy[8]={1,-1,0,0,-1,-1,1,1};
struct coada
{
int x,y;
};
coada c[DIM*DIM];
int n,m,ir,jr,ij,jj,a[DIM][DIM],b[DIM][DIM];
char ch;
void read ()
{
int i,j;
scanf("%d%d\n",&n,&m);
for(i=1;i<=n;++i)
{
for(j=1;j<=m;++j)
{
scanf("%c",&ch);
if(ch=='R')
{
ir=i;
jr=j;
a[i][j]=1;
}
if(ch=='J')
{
ij=i;
jj=j;
b[i][j]=1;
}
if(ch=='X')
a[i][j]=b[i][j]=-1;
}
scanf("\n");
}
for(i=0;i<=n+1;++i)
a[i][0]=a[i][m+1]=b[i][0]=b[i][m+1]=-1;
for(i=0;i<=m+1;++i)
a[0][i]=a[n+1][i]=b[0][i]=b[n+1][i]=-1;
}
void lee (int a[DIM][DIM],int i,int j)
{
int in,sf,k,x,y;
in=sf=1;
c[in].x=i;
c[in].y=j;
while (in<=sf)
{
x=c[in].x;
y=c[in].y;
in++;
for (k=0; k<8; ++k)
if (a[x+dx[k]][y+dy[k]]==0)
{
a[x+dx[k]][y+dy[k]]=a[x][y]+1;
++sf;
c[sf].x=x+dx[k];
c[sf].y=y+dy[k];
}
}
}
int show ()
{
int i,j,i2,j2,min=1000000;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]>0 && a[i][j]==b[i][j] && a[i][j]<min)
{
i2=i;
j2=j;
min=a[i][j];
}
printf("%d %d %d\n",min,i2,j2);
return 0;
}
int main ()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
read ();
lee (a,ir,jr);
lee (b,ij,jj);
show ();
return 0;
}