#include<cstdio>
#include<queue>
using namespace std;
int n, m, a[102][102],b[102][102], xj, yj, xr, yr, tmin=10000000, x,y;
int dl[]={-1,-1,-1,0,1,1,1,0};
int dc[]={-1,0,1,1,1,0,-1,-1};
queue< pair<int, int> > Q;
pair<int, int> aux;
char c;
bool ok(int x, int y)
{
return (x>=1 && x<=n && y>=1 && y<=m);
}
void cit()
{
freopen("rj.in","rt",stdin);
freopen("rj.out","wt",stdout);
scanf("%d %d",&n,&m);
scanf("%c",&c);
for(register int i=1;i<=n;i++, scanf("%c",&c))
for(register int j=1;j<=m;j++)
{
scanf("%c",&c);
if(c=='X') a[i][j]=b[i][j]=-1;
if(c=='R') { xr=i; yr=j; }
if(c=='J') { xj=i; yj=j; }
}
}
void parg(int x, int y, int a[][102])
{
Q.push(make_pair(x,y));
a[x][y]=1;
while(!Q.empty())
{
aux=Q.front();
Q.pop();
for(register int k=0;k<8;k++)
{
int ll=aux.first+dl[k], cc=aux.second+dc[k];
if(ok(ll,cc) && a[ll][cc]==0)
{
a[ll][cc]=a[aux.first][aux.second]+1;
Q.push(make_pair(ll,cc));
}
}
}
}
void drum()
{
for(register int i=1;i<=n;i++)
for(register int j=1;j<=m;j++)
{
if(a[i][j]==b[i][j] && a[i][j]>0 && a[i][j]<tmin)
{
tmin=a[i][j];
x=i;
y=j;
}
}
}
int main()
{
cit();
parg(xr,yr,a);
parg(xj,yj,b);
drum();
printf("%d %d %d",tmin,x,y);
return 0;
}