#include <iostream>
#include <fstream>
#include <iomanip>
#include <climits>
#define MAX 101
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n, m, a[MAX][MAX];
int x, y, i2, j2;
const int di[]={0, 1, 0, -1, -1, 1, -1, 1},
dj[]={1, 0, -1, 0, -1, 1, 1,-1};
int rom[MAX][MAX], jul[MAX][MAX];
void Afisare();
void Citire();
void Lee1(int istart, int jstart)
{
int l[10500], c[10500];
int st=1, dr=1;
l[dr]=istart;
c[dr]=jstart;
rom[istart][jstart]=1;
while(st<=dr)
{
int i=l[st], j=c[st];
for(int k=0;k<8;k++)
{
int ii=i+di[k], jj=j+dj[k];
if(ii>0 && ii<=n && jj>0 && jj<=m && a[ii][jj]==0 && rom[ii][jj]==0)
{
dr++;
l[dr]=ii, c[dr]=jj;
rom[ii][jj]=rom[i][j]+1;
}
}
st++;
}
}
void Lee2(int istart, int jstart)
{
int l[10500], c[10500];
int st=1, dr=1;
l[dr]=istart;
c[dr]=jstart;
jul[istart][jstart]=1;
while(st<=dr)
{
int i=l[st], j=c[st];
for(int k=0;k<8;k++)
{
int ii=i+di[k], jj=j+dj[k];
if(ii>0 && ii<=n && jj>0 && jj<=m && a[ii][jj]==0 && jul[ii][jj]==0)
{
dr++;
l[dr]=ii, c[dr]=jj;
jul[ii][jj]=jul[i][j]+1;
}
}
st++;
}
}
int main()
{
Citire();
Lee1(x, y);
Lee2(i2, j2);
int min=INT_MAX;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(rom[i][j]==jul[i][j] && rom[i][j]!=0 && jul[i][j]!=0)
if(min>rom[i][j])
min=rom[i][j], x=i, y=j;
fout<<rom[x][y]<<" "<<x<<" "<<y;
return 0;
}
void Citire()
{
char p;
fin>>n>>m;
fin.get();
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
p=fin.get();
if(p=='X')
a[i][j]=-1;
else
if(p==' ')
a[i][j]=0;
else
if(p=='R')
a[i][j]=-2, x=i, y=j;
else
if(p=='J')
a[i][j]=-3, i2=i, j2=j;
}
fin.get();
}
}