#include <fstream>
using namespace std;
ifstream cin("rj.in");
ofstream cout("rj.out");
int dirL[]={-1,-1,0,1,1,1,0,-1};
int dirC[]={0,1,1,1,0,-1,-1,-1};
struct coordonate
{
int l,c;
};
int interior(int x,int y,int n,int m)
{
return x>=1 && x<=n && y>=1 && y<=m;
}
void lee(int x, int y, int s[102][102], int n, int m )
{
coordonate coada[10001];
int sf,inc,lin,col,i;
sf=inc=1;
coada[inc].l=x;
coada[inc].c=y;
while(inc<=sf)
{
for(i=0; i<=7; i++)
{
lin=coada[inc].l+dirL[i];
col=coada[inc].c+dirC[i];
if( interior(lin,col,n,m) && s[lin][col]==0)
{
sf++;
coada[sf].l=lin;
coada[sf].c=col;
s[lin][col]=s[coada[inc].l][coada[inc].c]+1;
}
}
inc++;
}
s[x][y]=0;
}
int main()
{
char s[102];
int a[102][102],b[102][102],n,m,i,j,l1,c1,l2,c2,minim=101*101,xm,ym;
cin>>n>>m;
cin.getline(s,102);
for(i=1; i<=n; i++)
{
cin.getline(s,102);
for(j=1; j<=m; j++)
{
if(s[j-1]=='R')
{
a[i][j]=0;
b[i][j]=0;
l1=i;
c1=j;
}
else if(s[j-1]=='J')
{
a[i][j]=0;
b[i][j]=0;
l2=i;
c2=j;
}
else if(s[j-1]=='X')
{
a[i][j]=-1;
b[i][j]=-1;
}
else
{
a[i][j]=0;
b[i][j]=0;
}
}
}
lee(l1,c1,a,n,m);
lee(l2,c2,b,n,m);
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
if(a[i][j]==b[i][j] && a[i][j]>0 && a[i][j]<minim)
{
minim=a[i][j];
xm=i;
ym=j;
}
}
}
cout<<minim+1<<' '<<xm<<' '<<ym;
return 0;
}