#include <stdio.h>
using namespace std;
int tabla [102][102],n,icrt,jcrt,uq,pq,k,tabla2[102][102],uq2,pq2,m;
struct queue{int i,j;}q[20000],q2[20000];
void sari(int icrt, int jcrt, int k)
{
if(icrt>0&&icrt<=n&&jcrt>0&&jcrt<=m&&tabla[icrt][jcrt]==0)
{
tabla[icrt][jcrt]=k+1;
q[++uq].i=icrt;
q[uq].j=jcrt;
}
}
void sari2(int icrt,int jcrt, int k)
{
if(icrt>0&&icrt<=n&&jcrt>0&&jcrt<=m&&tabla2[icrt][jcrt]==0)
{
tabla2[icrt][jcrt]=k+1;
q2[++uq2].i=icrt;
q2[uq2].j=jcrt;
}
}
int main()
{
FILE *f=fopen("rj.in","r");
int ii,ji,ifi,jfi;
char c;
fscanf(f,"%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{fscanf(f,"%c",&c);
while(c=='\n')
fscanf(f,"%c",&c);
if(c=='X')
tabla[i][j]=tabla2[i][j]=-1;
else
if(c=='R')
{
ii=i;
ji=j;
}
else
if(c=='J')
{
ifi=i;
jfi=j;
}
}
tabla[ii][ji]=1;
pq=uq=1;
q[1].i=ii;
q[1].j=ji;
k=tabla[ii][ji];
while(pq<=uq)
{
ii=q[pq].i;
ji=q[pq].j;
k=tabla[ii][ji];
sari(ii+1,ji,k);
sari(ii,ji+1,k);
sari(ii-1,ji,k);
sari(ii,ji-1,k);
sari(ii+1,ji+1,k);
sari(ii+1,ji-1,k);
sari(ii-1,ji-1,k);
sari(ii-1,ji+1,k);
pq++;
k++;
}
pq2=uq2=1;
q2[1].i=ifi;
q2[1].j=jfi;
tabla2[ifi][jfi]=1;
k=tabla2[ifi][jfi];
while(pq2<=uq2)
{
ifi=q2[pq2].i;
jfi=q2[pq2].j;
k=tabla2[ifi][jfi];
sari2(ifi+1,jfi,k);
sari2(ifi,jfi+1,k);
sari2(ifi-1,jfi,k);
sari2(ifi,jfi-1,k);
sari2(ifi+1,jfi+1,k);
sari2(ifi+1,jfi-1,k);
sari2(ifi-1,jfi-1,k);
sari2(ifi-1,jfi+1,k);
pq2++;
k++;
}
/* for(int i=1;i<=n;i++)
{for(int j=1;j<=m;j++)
printf("%3d",tabla[i][j]);
printf("\n");}
printf("\n");
for(int i=1;i<=n;i++)
{for(int j=1;j<=m;j++)
printf("%3d",tabla2[i][j]);
printf("\n");}
*/
int imin=999999,jmin=99999999,tmin=99999999;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(tabla[i][j]==tabla2[i][j]&&tabla[i][j]!=-1&&tabla[i][j]!=0)
if(tabla[i][j]<tmin)
{tmin=tabla[i][j];
imin=i;
jmin=j;
}
f=fopen("rj.out","w");
fprintf(f,"%d %d %d\n",tmin,imin,jmin);
return 0;
}