#include <stdio.h>
#include <stdlib.h>
char mat[102][102], dirx[8]={-1, -1, 0, 1, 1, 1, 0, -1}, diry[8]={0, 1, 1, 1, 0, -1, -1, -1};
int dist[2][102][102];
void bordare(int n, int m){
int i;
for(i=0;i<n+2;i++){
mat[i][0]='X';
mat[i][m+1]='X';
}
for(i=0;i<m+2;i++){
mat[0][i]='X';
mat[n+1][i]='X';
}
}
void drum(int var, int x, int y, int nr){
int i;
dist[var][x][y]=nr;
for(i=0;i<8;i++)
if(mat[x+dirx[i]][y+diry[i]]==' ' && dist[var][x+dirx[i]][y+diry[i]]>nr+1)
drum(var, x+dirx[i], y+diry[i], nr+1);
}
int main(){
FILE *fin, *fout;
int n, m, i, j, xr, yr, xj, yj, min, y, xmin, ymin;
fin=fopen("rj.in", "r");
fout=fopen("rj.out", "w");
fscanf(fin, "%d%d", &n, &m);
fgetc(fin);
bordare(n, m);
for(i=1;i<n+1;i++){
for(j=1;j<m+1;j++){
mat[i][j]=fgetc(fin);
if(mat[i][j]=='R'){
xr=i;
yr=j;
}
if(mat[i][j]=='J'){
xj=i;
yj=j;
}
}
fgetc(fin);
}
//for(y=0;y<2;y++)
//for(i=0;i<n+2;i++)
//for(j=0;j<m+2;j++)
//dist[y][i][j]=10000;
drum(0, xr, yr, 1);
drum(1, xj, yj, 1);
min=10000;
//printf("\n");
for(i=1;i<n+1;i++){
for(j=1;j<m+1;j++){
//printf("%6d ", dist[0][i][j]);
if(dist[0][i][j]==dist[1][i][j] && dist[0][i][j]!=0)
if(min>dist[0][i][j]){
min=dist[0][i][j];
xmin=i;
ymin=j;
}
}
//printf("\n");
}
fprintf(fout, "%d %d %d", min, xmin, ymin);
fclose(fin);
fclose(fout);
return 0;
}