#include <iostream>
#include <iomanip>
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,R[101][101],J[101][101],iR,jR,iJ,jJ;
int di[]={-1,-1,-1, 0, 0, 1, 1, 1},
dj[]={-1, 0, 1,-1, 1,-1, 0, 1};
void Afis(int a[][101]){
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j)
cout<<setw(3)<<a[i][j];
cout<<endl;
}
cout<<endl;
}
void fill(int a[][101],int iS,int jS){
queue<pair<int,int> > Q;
a[iS][jS]=1;
Q.push(make_pair(iS,jS));
while(!Q.empty()){
int i=Q.front().first, j=Q.front().second;
for(int k=0;k<8;++k){
int ii,jj;
ii=i+di[k],jj=j+dj[k];
if(ii>0 && ii<=n && jj>0 && jj<=m && a[ii][jj]==0){
a[ii][jj]=a[i][j]+1;
Q.push(make_pair(ii,jj));
//cout<<"bag("<<ii<<","<<jj<<") ";
}
}
//cout<<"scot("<<i<<","<<j<<") ";
Q.pop();
}
//cout<<endl;
}
int main(){
fin>>n>>m;
char s[105];
fin.getline(s,105);
for(int i=1;i<=n;++i){
fin.getline(s,105);
for(int j=0;j<m;++j){
if(s[j]=='X')
R[i][j+1]=J[i][j+1]=-1;
if(s[j]=='R')
iR=i,jR=j+1;
if(s[j]=='J')
iJ=i,jJ=j+1;
}
}
//Afis(R);
//Afis(J);
fill(R,iR,jR);
fill(J,iJ,jJ);
//Afis(R);
//Afis(J);
int min=1<<16,imin,jmin;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
if(R[i][j]==J[i][j] && R[i][j]>0)
if(R[i][j]<min)
min=R[i][j],imin=i,jmin=j;
fout<<min<<" "<<imin<<" "<<jmin<<"\n";
return 0;
}