#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;
int ju[102][102],bi[102][102],b1,b2,j1,j2;
void fille(int a[102][102],int n,int m,int x,int y)
{
if(x<n && (a[x+1][y]==0 || a[x+1][y]>a[x][y]+1))
{
a[x+1][y]=a[x][y]+1;
fille(a,n,m,x+1,y);
}
if(y<m && (a[x][y+1]==0 || a[x][y+1]>a[x][y]+1))
{
a[x][y+1]=a[x][y]+1;
fille(a,n,m,x,y+1);
}
if(x>1 && (a[x-1][y]==0 || a[x-1][y]>a[x][y]+1))
{
a[x-1][y]=a[x][y]+1;
fille(a,n,m,x-1,y);
}
if(y>1 && (a[x][y-1]==0 || a[x][y-1]>a[x][y]+1))
{
a[x][y-1]=a[x][y]+1;
fille(a,n,m,x,y-1);
}
if(x<n && y<m && (a[x+1][y+1]==0 || a[x+1][y+1]>a[x][y]+1))
{
a[x+1][y+1]=a[x][y]+1;
fille(a,n,m,x+1,y+1);
}
if(x<n && y>1 && (a[x+1][y-1]==0 || a[x+1][y-1]>a[x][y]+1))
{
a[x+1][y-1]=a[x][y]+1;
fille(a,n,m,x+1,y-1);
}
if(x>1 && y<m && (a[x-1][y+1]==0 || a[x-1][y+1]>a[x][y]+1))
{
a[x-1][y+1]=a[x][y]+1;
fille(a,n,m,x-1,y+1);
}
if(x>1 && y>1 && (a[x-1][y-1]==0 || a[x-1][y-1]>a[x][y]+1))
{
a[x-1][y-1]=a[x][y]+1;
fille(a,n,m,x-1,y-1);
}
}
void citire(int &n,int &m)
{
ifstream f("rj.in");
char c;
f>>n>>m;
f.get();
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
f.get(c);
if(c=='X')
bi[i][j]=ju[i][j]=-1;
if(c=='R')
{
bi[i][j]=1;
ju[i][j]=-1;
b1=i;
b2=j;
}
if(c=='J')
{
ju[i][j]=1;
bi[i][j]=-1;
j1=i;
j2=j;
}
}
f.get();
}
}
int main()
{
int a[101][101],n,m,i,j,k1,k2,maxi=12000,SarmalutaUcigasa;
citire(n,m);
fille(bi,n,m,b1,b2);
fille(ju,n,m,j1,j2);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(bi[i][j]==ju[i][j] && bi[i][j]>0 && bi[i][j]<maxi)
{
maxi=bi[i][j];
k1=i;
k2=j;
}
ofstream g("rj.out");
g<<maxi<<" "<<k1<<" "<<k2;
return 0;
}