#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
const int dx[]={-1,-1,0,1,1,1,0,-1};
const int dy[]={0,1,1,1,0,-1,-1,-1};
int lr,cr,lj,cj;
bool bune(int ii,int jj,int n,int m)
{
return(ii>=0 and ii<n and jj>=0 and jj<m);
}
void lee(int n,int m,int a[][100],int i,int j)
{
int cx[10000],cy[10000],k,ii,jj,pi,ps;
cx[0]=i;
cy[0]=j;
a[i][j]=1;
pi=0;
ps=0;
while(pi<=ps)
{
for(k=0;k<8;k++)
{
ii=cx[pi]+dx[k];
jj=cy[pi]+dy[k];
if(bune(ii,jj,n,m))
if(!a[ii][jj])
{
ps++;
cx[ps]=ii;
cy[ps]=jj;
a[ii][jj]=a[cx[pi]][cy[pi]]+1;
}
}
pi++;
}
}
void citire(int &n,int &m,int a[][100],int mR[][100],int mJ[][100])
{
int i,j;
char x[101];
f>>n>>m;
f.get();
for(i=0;i<n;i++)
{
f.getline(x,101,'\n');
for(j=0;x[j];j++)
{
mR[i][j]=0;
mJ[i][j]=0;
if(x[j]=='R')
{
mR[i][j]=1;
lr=i;
cr=j;
}
if(x[j]=='J')
{
mJ[i][j]=1;
lj=i;
cj=j;
}
if(x[j]=='X')
{
mR[i][j]=-1;
mJ[i][j]=-1;
}
}
}
}
void solutie(int mR[][100],int mJ[][100],int n,int m)
{
int mini=10000,i,j,s1,s2;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(mR[i][j]==mJ[i][j] and mR[i][j] > 1)
if(mini > mR[i][j])
{
mini=mR[i][j];
s1=i;
s2=j;
}
s1++;
s2++;
g<<mini<<" "<<s1<<" "<<s2;
}
int main()
{
int a[100][100],mR[100][100],mJ[100][100],n,m;
citire(n,m,a,mR,mJ);
lee(n,m,mR,lr,cr);
lee(n,m,mJ,lj,cj);
solutie(mR,mJ,n,m);
return 0;
}