/**
*/
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
int a[100][100],r[100][100],jul[100][100],dl[]= {-1,-1,-1,0,1,1,1,0},dc[]= {-1,0,1,1,1,0,-1,-1,-1};
queue<int> x,y;
void drum1(int l,int c,int n,int m)
{
x.push(l);
y.push(c);
while(!x.empty())
{
int i=x.front();
int j=y.front();
for(int k=0; k<8; k++)
{
int xx=i+dl[k];
int yy=j+dc[k];
if(xx>=0 && xx<n && yy>=0 && yy<m)
{
if(r[xx][yy]==0 && a[xx][yy]!=-1)
{
r[xx][yy]=r[i][j]+1;
x.push(xx);
y.push(yy);
}
}
}
x.pop();
y.pop();
}
}
void drum2(int l,int c,int n,int m)
{
x.push(l);
y.push(c);
while(!x.empty())
{
int i=x.front();
int j=y.front();
for(int k=0; k<8; k++)
{
int xx=i+dl[k];
int yy=j+dc[k];
if(xx>=0 && xx<n && yy>=0 && yy<m)
{
if(jul[xx][yy]==0 && a[xx][yy]!=-1)
{
jul[xx][yy]=jul[i][j]+1;
x.push(xx);
y.push(yy);
}
}
}
x.pop();
y.pop();
}
}
int main()
{
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,i=0,j,lr,cr,lj,cj,minim=1000000,soll,solc;
char q[100];
fin>>n>>m;
fin.getline(q,100);
while(i<n)
{
fin.getline(q,100);
for(j=0; j<m; j++)
{
a[i][j]=0;
if(q[j]=='X')
a[i][j]=-1;
if(q[j]=='R')
{
lr=i;
cr=j;
r[i][j]=1;
}
if(q[j]=='J')
{
lj=i;
cj=j;
jul[i][j]=1;
}
}
i++;
}
drum1(lr,cr,n,m);
drum2(lj,cj,n,m);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(r[i][j]==jul[i][j] && r[i][j]!=0)
{
if(r[i][j]<minim)
{
minim=r[i][j];
soll=i+1;
solc=j+1;
}
}
}
}
fout<<minim<<" "<<soll<<" "<<solc;
return 0;
}