#include <fstream>
#include <cstring>
#include <queue>
using namespace std;
ifstream fin ("rj.in");
ofstream fout ("rj.out");
queue < pair <int,int> > coada;
int dl[8]={-1,-1,1,-1,1,-1,0,0};
int dc[8]={-1,1,1,-1,0,0,-1,1};
int N,M,A[101][101],B[101][101],startJx,startJy,startRx,startRy;char s[101][101];
void Read()
{
fin>>N>>M;fin.get();
for(int i=1;i<=N;i++)
{
fin.getline(s[i],M+1);
for(int j=0;j<strlen(s[i]);j++)
if(s[i][j]=='R')
{
A[i][j+1]=1;B[i][j+1]=1;
startRx=i;
startRy=j+1;
}
else
if(s[i][j]=='J')
{
A[i][j+1]=1;B[i][j+1]=1;
startJx=i;
startJy=j+1;
}
else
if(s[i][j]=='X')
{
A[i][j+1]=-2;B[i][j+1]=-2;
}
else
{
A[i][j+1]=-1;B[i][j+1]=-1;
}
}
for(int i=1;i<=N;i++)
for(int j=1;j<=M;j++)
if(A[i][j]==0)
{
A[i][j]=-1;B[i][j]=-1;
}
}
bool OK(int i,int j,int A[101][101])
{
if(i<1||j<1||i>N||j>M)
return false;
if(A[i][j]==-2||A[i][j]==1)
return false;
return true;
}
void Romeo()
{
int i,j,i_urmator,j_urmator;
coada.push(make_pair(startRx,startRy));
while(!coada.empty())
{
i=coada.front().first;
j=coada.front().second;
coada.pop();
for(int distanta=0;distanta<8;distanta++)
{
i_urmator= i+dl[distanta];
j_urmator= j+dc[distanta];
if(OK(i_urmator,j_urmator,A)&&A[i_urmator][j_urmator]<1)
{
A[i_urmator][j_urmator]=A[i][j]+1;
coada.push(make_pair(i_urmator,j_urmator));
}
}
}
coada.push(make_pair(startJx,startJy));
while(!coada.empty())
{
i=coada.front().first;
j=coada.front().second;
coada.pop();
for(int distanta=0;distanta<8;distanta++)
{
i_urmator= i+dl[distanta];
j_urmator= j+dc[distanta];
if(OK(i_urmator,j_urmator,A)&&A[i_urmator][j_urmator]<1)
{
A[i_urmator][j_urmator]=A[i][j]+1;
coada.push(make_pair(i_urmator,j_urmator));
}
}
}
}
void Julieta()
{
int i,j,i_urmator,j_urmator;
coada.push(make_pair(startJx,startJy));
while(!coada.empty())
{
i=coada.front().first;
j=coada.front().second;
coada.pop();
for(int distanta=0;distanta<8;distanta++)
{
i_urmator= i+dl[distanta];
j_urmator= j+dc[distanta];
if(OK(i_urmator,j_urmator,B)&&B[i_urmator][j_urmator]<1)
{
B[i_urmator][j_urmator]=B[i][j]+1;
coada.push(make_pair(i_urmator,j_urmator));
}
}
}
coada.push(make_pair(startRx,startRy));
while(!coada.empty())
{
i=coada.front().first;
j=coada.front().second;
coada.pop();
for(int distanta=0;distanta<8;distanta++)
{
i_urmator= i+dl[distanta];
j_urmator= j+dc[distanta];
if(OK(i_urmator,j_urmator,B)&&B[i_urmator][j_urmator]<1)
{
B[i_urmator][j_urmator]=B[i][j]+1;
coada.push(make_pair(i_urmator,j_urmator));
}
}
}
}
void afisare()
{
for(int i=1;i<=N;i++)
{
int ok=1;
for(int j=1;j<=M;j++)
if(A[i][j]==B[i][j])
if(A[i][j]>1)
{
fout<<A[i][j]<<' '<<i<<' '<<j;
ok=0;
break;
}
if(ok==0)
break;
}
}
/*void completare(int A[101][101])
{
for(int i=1;i<=N;i++)
{
int i_urmator,j_urmator;
for(int j=1;j<=M;j++)
if(A[i][j]>1)
for(int distanta=0;distanta<8;distanta++)
{
i_urmator= i+dl[distanta];
j_urmator= j+dc[distanta];
}
}
}*/
/*void afisare1(int A[101][101])
{
for(int i=1;i<=N;i++)
{
for(int j=1;j<=M;j++)
fout<<A[i][j]<<' ';
fout<<'\n';
}
}*/
int main()
{
Read();
Romeo();
Julieta();
afisare();
return 0;
}