#include <stdio.h>
using namespace std;
FILE*f=fopen("rj.in","r");
FILE*g=fopen("rj.out","w");
#include <algorithm>
int tmin,i,j, n,m,a[101][101],b[101][101];
int dx[]={-1,0,1,0,-1,1,-1,1};
int dy[]={0,-1,0,1,-1,-1,1,1};
char x;
void bordare(int a[101][101]){
int i,j;
for(i=0;i<=n+1;i++) a[i][0]=a[i][m+1]=-1;
for(j=0;j<=m+1;j++) a[0][j]=a[n+1][j]=-1;
}
struct punct {
int l,c;
}v[101*101],rr,jj;
void lee(int x,int y,int a[101][101]){
int x2,y2,p,i,j,u;
p=u=1;
v[p].l=x;
v[p].c=y;
while(p<=u){
for(i=0;i<8;i++)
for(j=0;j<8;j++)
{
x2=v[p].l+dx[i];
y2=v[p].c+dy[i];
if(a[x2][y2]==0){
a[x2][y2]=a[v[p].l][v[p].c]+1;
v[++u].l=x2;
v[u].c=y2;
}
}
p++;
}
}
int main()
{
fscanf(f,"%d%d\n",&n,&m);
for(i=1;i<=n;i++){
for(j=1;j<=m;j++)
{
fscanf(f,"%c",&x);
if(x=='R') a[i][j]=1,b[i][j]=0,rr.l=i,rr.c=j;
else if(x=='J') b[i][j]=1,a[i][j]=0,jj.l=i,jj.c=j;
else if(x=='X') b[i][j]=-1,a[i][j]=-1;
else a[i][j]=b[i][j]=0;
}
fscanf(f,"\n");
}
bordare(a);
bordare(b);
a[1][1]=1;
lee(rr.l,rr.c,a);
lee(jj.l,jj.c,b);
//for(i=1;i<=n;i++){
// for(j=1;j<=m;j++)
//{
// fprintf(g,"%d ",a[i][j]);
//}
//fprintf(g,"\n");
//}
tmin=99999999;int lin,col;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++){
if(max(a[i][j],b[i][j])<tmin&&a[i][j]!=-1&&max(a[i][j],b[i][j])>0) {tmin=max(a[i][j],b[i][j]);
lin=i;
col=j;}
}
fprintf(g,"%d %d %d",tmin,lin,col);
fclose(f);
fclose(g);
return 0;
}