#include<stdio.h>
int m, n, a[70][70],b[70][70], rx, ry, jx, jy;
int d1[8]={1, 1, 1, -1, -1, -1, 0, 0};
int d2[8]={-1, 0, 1, -1, 0, 1, -1, 1} ;
struct cva{
int ics;
int igrec;
};
cva coada1[4900], coada2[4900];
void citesc(){
char s[101];
int i,j;
scanf("%d", &n);
scanf("%d\n", &m);
for(i=1; i<=n;++i){
gets(s);
for(j=0; s[j] ; ++j)
{
if(s[j]==' '){
a[i][j+1]=0;
b[i][j+1]=0;
}
if(s[j]=='X'){
a[i][j+1]=-1;
b[i][j+1]=-1;
}
if(s[j]=='R'){
a[i][j+1]=1;
b[i][j+1]=0;
rx=i;ry=j+1;
}
if(s[j]=='J'){
a[i][j+1]=0;
b[i][j+1]=1;
jx=i;
jy=j+1;
}
}
}
}
void bordez(){
int i;
for(i=0; i<=m+1;++i)
{
a[0][i]=-1;
b[0][i]=-1;
a[n+1][i]=-1;
b[n+1][i]=-1;
}
for(i=0; i<=n+1;++i)
{
a[i][0]=-1;
b[i][0]=-1;
a[i][m+1]=-1;
b[i][m+1]=-1;
}
}
void romeo(cva coad[], int aa[][70], int x, int y){
int i, p=0, u=0;
coad[u].ics=x;
coad[u].igrec=y;
u++;
while(p!=u){
x=coad[p].ics;
y=coad[p].igrec;
p++;
for(i=0; i<=7;++i){
if(aa[x+d1[i]][y+d2[i]]==0){
coad[u].ics=x+d1[i];
coad[u].igrec=y+d2[i];
u++;
aa[x+d1[i]][y+d2[i]]=1+aa[x][y];
}
}
}
}
void scrie(int a[70][70])
{
for(int i=1;i<=n;++i)
{
for(int j=1;j<=m;++j)
printf("%4d",a[i][j]);
printf("\n");
}
printf("\n");
}
int main(){
freopen("rj.in", "r", stdin);
freopen("rj.out", "w", stdout);
citesc();
int i, j;
bordez();
romeo(coada1, a, rx, ry);
romeo(coada2, b, jx, jy);
int bun1=0;
//scrie(a);
//scrie(b);
int bun2=0;
a[0][0]=14000;
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]<a[bun1][bun2]){
bun1=i;
bun2=j;
}
printf("%d ", a[bun1][bun2]);
printf("%d ", bun1);
printf("%d\n", bun2);
return 0;
}