#include <stdio.h>
#include <limits.h>
#include <string.h>
#include <stdlib.h>
#include <fstream.h>
#define DIM 101
FILE *f=fopen("rj.in","r");
ofstream g("rj.out");
int n,m;
char a[DIM][DIM],b[DIM][DIM];
int R[DIM][DIM],J[DIM][DIM];
int di[8]={-1,1,0,0,-1,1,1,-1};
int dj[8]={0,0,1,-1,-1,1,-1,1};
struct deplasare{
int i;
int j;
};
deplasare c[1002];
void coada(char x,char y,int i,int j,char a[DIM][DIM],int R[DIM][DIM]){
int p=1,u=1;
c[p].i=i;
c[p].j=j;
a[i][j]=y;
while(p<=u){
for(register int d=0;d<=7;d++){
int iv=c[p].i+di[d];
int jv=c[p].j+dj[d];
if(a[iv][jv]==x){
a[iv][jv]=y;
c[++u].i=iv;
c[u].j=jv;
R[iv][jv]=R[c[p].i][c[p].j]+1;
}
}
p++;
}
}
int main(void){
register int i,j;
fscanf(f,"%d %d\n",&n,&m);
for(i=1;i<=n;i++){
fgets(a[i]+1,10001,f);
for(j=strlen(a[i]+1)-1;j<=m;j++){
if(a[i][j]!='X' && a[i][j]!='R' && a[i][j]!='J')
a[i][j]=' ';
}
a[i][m+1]=0;
strcpy(b[i]+1,a[i]+1);
}
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
if(a[i][j]=='R')
coada(' ','.',i,j,a,R);
if(b[i][j]=='J')
coada(' ','.',i,j,b,J);
}
}
int cordi,cordj;
int min=INT_MAX;
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
if(R[i][j]>0 && J[i][j]==R[i][j] && R[i][j]<min)
min=R[i][j],cordi=i,cordj=j;
}
}
g<<min+1<<" "<<cordi<<" "<<cordj;
fclose(f);
g.close();
return 0;
}