#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;
ifstream fin("rj.in");ofstream fout("rj.out");
int dl[8]={-1,-1,0,1,1,1,0,-1},dc[8]={0,1,1,1,0,-1,-1,-1},i,j,minix,miniy,xr,yr,xj,yj,ro[101][101],ju[101][101],n,m,inc,sf,mini=2000000000;
char s[101];
struct rj
{
int c,l,d;
}C[10201],x,y;
void minim()
{
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(ro[i][j]==ju[i][j]&&ro[i][j]>0&&ju[i][j]>0)
if(ro[i][j]<mini)
{
mini=ro[i][j];
minix=i;
miniy=j;
}
}
}
void citire()
{
fin>>n>>m;fin.getline(s,101);
for (i=1;i<=n;i++)
{
fin.getline(s,101);
for (j=0;j<m;j++)
{
if (s[j]=='J')
{
xj=i;
yj=j+1;
ro[i][j+1]=ju[i][j+1]=-2;
}
else if (s[j]=='R')
{
xr=i;
yr=j+1;
ro[i][j+1]=ju[i][j+1]=-2;
}
else if (s[j]=='X') ro[i][j+1]=ju[i][j+1]=-1;
else ro[i][j+1]=ju[i][j+1]=-2;
}
}
}
void lee(int k[101][101],int a,int b)
{
inc=sf=0;
k[a][b]=1;
C[inc].l=a;
C[inc].c=b;
while (inc<=sf)
{
x=C[inc++];
for (i=0;i<=7;i++)
{
y.l=x.l+dl[i];
y.c=x.c+dc[i];
if (k[y.l][y.c]==-2)
{
k[y.l][y.c]=k[x.l][x.c]+1;
C[++sf]=y;
}
}
}
}
int main()
{
citire();
lee(ro,xr,yr);
lee(ju,xj,yj);
minim();
fout<<mini<<' '<<minix<<' '<<miniy;
fout.close();
return 0;
}