#include <stdio.h>
#define N 105
struct poz{
int x,y;
};
int a[N][N],b[N][N],c[N][N],n,m;
const int dl[]={-1,0,1,0,-1,-1,1,1},dc[]={0,1,0,-1,-1,1,-1,1};
void lee(int x, int y,int c[N][N])
{
int p,u,i,j;
poz d[100000];
p=1;
u=1;
d[1].x=x;
d[1].y=y;
c[x][y]=1;
for (i=p;p<=u;i++)
{
for (j=0;j<8;j++)
if (!c[d[i].x+dl[j]][d[i].y+dc[j]] && a[d[i].x+dl[j]][d[i].y+dc[j]])
{
u++;
d[u].x=d[i].x+dl[j];
d[u].y=d[i].y+dc[j];
c[d[i].x+dl[j]][d[i].y+dc[j]]=c[d[i].x][d[i].y]+1;
}
p++;
}
}
inline int minim(int a,int b){
return a>b?a:b;
}
void afis()
{
FILE *out;
int i,j,min,x,y;
out=fopen("rj.out","w");
min=2000000000;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (a[i][j]&&minim(b[i][j],c[i][j])<min&&b[i][j]&&c[i][j])
{
min=minim(b[i][j],c[i][j]);
x=i;
y=j;
}
fprintf(out,"%d %d %d\n",min,x,y);
fclose(out);
}
void scrie(int a[N][N]){
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j)
printf("%3d",a[i][j]);
printf("\n");
}
printf("\n");
}
int main()
{
FILE *in;
char cc;
int i,j,x1,x2,y1,y2;
char s[200];
in=fopen("rj.in","r");
fscanf(in,"%d%d\n",&n,&m);
//while (1)
//fscanf(in,"%c",&cc);
for (i=1;i<=n;i++)
{
fgets(s,200,in);
//fscanf(in,"%c",&cc);
for (j=0;j<m;j++)
{
if (s[j]!='X')
a[i][j+1]=1;
if (s[j]=='X')
a[i][j+1]=0;
if (s[j]=='J')
{
x1=i;
y1=j+1;
}
if (s[j]=='R')
{
x2=i;
y2=j+1;
}
//printf("%d ",a[i][j+1]);
}
//printf("\n");
}
lee(x1,y1,b);
lee(x2,y2,c);
//scrie(b);
//scrie(c);
afis();
fclose(in);
return 0;
}