#include <stdio.h
int n,m,xr,yr,xj,yj;
int R[101][101],J[101][101];
char map[101][101];
int deltax[]={-1,0,1, 0,-1,1, 1,-1};
int deltay[]={ 0,1,0,-1, 1,1,-1,-1};
void flood(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 )
a[i][j]=(map[i][j]=='X')?(-1):(100000);
a[x][y] = 1;
for (step=1; flag; ++step)
{
flag = 0;
for (i=1; i<=n; ++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+deltax[k]][j+deltay[k]])
{
a[i+deltax[k]][j+deltay[k]]=a[i][j]+1;
flag=1;
}
}
}
void read_solve()
{
int i,j,retx,rety,cost;
scanf("%d%d\n",&n,&m);
for (i=1; i<=N; ++i)
fgets(map[i]+1,Nmax,stdin);
for (i=1; i<=n; ++i)
for (j=1; j<=m; ++j)
{
if (map[i][j]=='R')
{
xr=i;
yr=j;
}
if ( map[i][j] == 'J' )
{
xr=i;
yr=j;
}
}
flood(R,xr,yr);
flood(J,xj,yj);
cost = 100000;
for (i=1; i<=n; ++i)
for (j=1; j<=M; ++j)
if (R[i][j]==J[i][j] && R[i][j]>0)
if (cost>R[i][j])
{
cost=R[i][j];
retx=i;
rety=j;
}
printf("%d %d %d\n",cost,retx,rety);
}
int main()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
read_solve();
return 0;
}