#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
#define Nmax 101
const int dx[]={-1,-1,0,1,1,1,0,-1};
const int dy[]={0,1,1,1,0,-1,-1,-1};
void citire(int a[][Nmax], int &n, int &m, int &xr, int&yr, int &xj, int &yj)
{
int i,j;
char s[Nmax];
fin>>n>>m;
fin.get();
for(i=1;i<=n;i++)
{
fin.getline(s,Nmax,'\n');
for(j=0;j<m;j++)
{
if(s[j]==' ')
a[i][j+1]=0;
if(s[j]=='X')
a[i][j+1]=-1;
if(s[j]=='R')
{
xr=i; yr=j+1;
a[i][j+1]=0;
}
if(s[j]=='J')
{
xj=i; yj=j+1;
a[i][j+1]=0;
}
}
}
}
void afisare(int a[][Nmax], int n, int m)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
inline bool bune(int i, int j, int n, int m, int a[][Nmax])
{
if(i>0 && i<=n && j<=m && j>0)
if(a[i][j]==0)
return 1;
return 0;
}
void lee(int a[][Nmax], int n, int m, int xi, int yi)
{
int cx[Nmax*Nmax],cy[Nmax*Nmax],pi,ps,k,i,j;
cx[0]=xi;
cy[0]=yi;
pi=0;
ps=0;
while(pi<=ps)
{
for(k=0;k<8;k++)
{
i=cx[pi]+dx[k];
j=cy[pi]+dy[k];
if(bune(i,j,n,m,a)==1)
{
a[i][j]=a[cx[pi]][cy[pi]]+1;
ps++;
cx[ps]=i;
cy[ps]=j;
}
}
pi++;
}
}
int main()
{
int a[Nmax][Nmax],n,m,xr,yr,xj,yj,b[Nmax][Nmax],i,j,ok=0,mij,x_final,y_final,Min;
citire(a,n,m,xr,yr,xj,yj);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
b[i][j]=a[i][j];
a[xr][yr]=1;
b[xj][yj]=1;
lee(a,n,m,xr,yr);
lee(b,n,m,xj,yj);
if(a[xj][yj]%2==0)
mij=(a[xj][yj]/2);
else
mij=(a[xj][yj]/2)+1;
// afisare(a,n,m);
Min=1000000;
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]<Min)
{
Min=a[i][j];
x_final=i;
y_final=j;
}
fout<<Min<<" "<<x_final<<" "<<y_final;
// cout<<endl<<xr<<" "<<yr<<" "<<xj<<" "<<yj;
return 0;
}