#include <stdio.h>
int dx[]={-1,0,1,0,-1,1,1,-1};
int dy[]={0,1,0,-1,1,1,-1,-1};
int b[101][101],r[101][101],k[101][101];
int n,m,xr,yr,xj,yj;
void drum(int a[101][101],int x,int y)
{
int i,j,k,step,flag = 1;
for (i=1; i<=n; ++i)
for (j=1; j<=m; ++j)
if (b[i][j]==-1)
a[i][j]=-1;
else
a[i][j]=1000000;
a[x][y] = 1;
for (step=1; flag; ++step)
{
flag=0;
for (i=1; i<=m; ++i)
for (j=1; j<=m; ++j)
if (a[i][j]==step)
for (k=0;k<8;++k)
if (a[i][j]+1<a[i+dx[k]][j+dy[k]])
{
a[i+dx[k]][j+dy[k]]=a[i][j]+1;
flag=1;
}
}
}
void read ()
{
int i,j;
char ch;
scanf ("%d%d\n",&n,&m);
for (i=1; i<=n; ++i)
for (j=1; j<=m+1; ++j)
{
scanf ("%c",&ch);
if (ch=='\n' && j!=m+1)
{
ch=' ';
++j;
}
switch (ch)
{
case ' ':b[i][j]=0;break;
case 'X':b[i][j]=-1;break;
case 'R':
{
xr=i;
yr=j;
break;
}
case 'J':
{
xj=i;
yj=j;
break;
}
}
}
}
void solve()
{
drum(r,xr,yr);
drum(k,xj,yj);
int imin=0,jmin=0,min=1000000000,i,j;
for (i=1; i<=n; ++i)
for (j=1; j<=m; ++j)
if (r[i][j]==k[i][j] && r[i][j] && r[i][j]<min)
{
imin=i;
jmin=j;
min=r[i][j];
}
printf ("%d %d %d",min,imin,jmin);
}
int main ()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
read ();
solve ();
return 0;
}