#include <iostream>
#include<stdio.h>
struct ind {
int lin, col;
};
int a[176][176], b[176][176];
int linie[]={-1,-1,0,1,1,1,0,-1};
int colo[]={0,1,1,1,0,-1,-1,-1};
ind coada[40001];
using namespace std;
int main() {
FILE *fin, *fout;
int n, m, lc, cc, i, sf, in, l, pix, piy, pfx, pfy, col, lin, j, min;
char c;
fin=fopen("jr.in", "r");
fout=fopen("jr.out", "w");
fscanf( fin, "%d %d\n", &n, &m);
for(i=1;i<=n;i++) {
for(j=1;j<=m;j++) {
fscanf( fin, "%c", &c);
if(c=='X') {
a[i][j]=-1;
b[i][j]=-1;
}
if(c=='R') {
piy=i;
pix=j;
}
if(c=='J') {
pfy=i;
pfx=j;
}
}
fscanf( fin, "%c", &c);
}
for(i=0;i<=n+1;i++) {
a[i][0]=-1;
a[i][m+1]=-1;
b[i][0]=-1;
b[i][m+1]=-1;
}
for(j=0;j<=m+1;j++) {
a[0][j]=-1;
a[n+1][j]=-1;
b[0][j]=-1;
b[n+1][j]=-1;
}
in=1;
sf=1;
coada[1].lin=piy;
coada[1].col=pix;
while(in<=sf) {
for(i=0;i<8;i++) {
lc=coada[in].lin+linie[i];
cc=coada[in].col+colo[i];
if(a[lc][cc]==0) {
sf++;
coada[sf].lin=lc;
coada[sf].col=cc;
a[lc][cc]=a[coada[in].lin][coada[in].col]+1;
}
}
in++;
}
fprintf( fout, "%d ", a[pfy][pfx]+1);
in=1;
sf=1;
coada[1].lin=pfy;
coada[1].col=pfx;
while(in<=sf) {
for(i=0;i<8;i++) {
lc=coada[in].lin+linie[i];
cc=coada[in].col+colo[i];
if(b[lc][cc]==0) {
sf++;
coada[sf].lin=lc;
coada[sf].col=cc;
b[lc][cc]=b[coada[in].lin][coada[in].col]+1;
}
}
in++;
}
fprintf( fout, "%d ", b[piy][pix]+1);
min=1000000;
for(i=1;i<=n;i++) {
for(j=1;j<=m;j++) {
if(a[i][j]==b[i][j] && a[i][j]>0) {
if(a[i][j]<min) {
min=a[i][j]+1;
}
}
}
}
fprintf( fout, "%d", min);
fclose( fin );
fclose( fout );
return 0;
}