#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
int n,m,i=1,j=1,inc,sf,k,minimum=5000;
char c,t[5];
struct matrice
{ int r,j;
}a[100][100];
struct punct
{
short x,y;
}ro,ju,p;
const int di[]={-1,0,1,0,-1,1,-1,1};
const int dj[]={0,1,0,-1,-1,1,1,-1};
void bordare()
{
for(i=0;i<=n+1;i++)
a[i][0].r=a[i][0].j=a[i][n+1].r=a[i][n+1].j=-1;
for(i=0;i<=m;i++)
a[0][i].j=a[0][i].r=a[m+1][i].r=a[m+1][i].j=-1;
}
struct coada
{
int l,c,d;
}cd[50],x,y;
void lee1()
{
inc=sf=1;
x.l=ro.x;
x.c=ro.y;
x.d=0;
cd[inc]=x;
while(inc<=sf)
{
x=cd[inc];
for(k=0;k<8;k++)
{
y.l=x.l+di[k];
y.c=x.c+dj[k];
if(a[y.l][y.c].r==0)
{
y.d=x.d+1;
a[y.l][y.c].r=y.d;
cd[++sf]=y;
}
}
inc++;
}
}
void lee2()
{ inc=sf=1;
x.l=ju.x;
x.c=ju.y;
x.d=0;
cd[inc]=x;
while(inc<=sf)
{x=cd[inc];
for(k=0;k<8;k++)
{y.l=x.l+di[k];
y.c=x.c+dj[k];
if(a[y.l][y.c].j==0)
{y.d=x.d+1;
a[y.l][y.c].j=y.d;
cd[++sf]=y;
}
}
inc++;
}
}
int main()
{
FILE *f=fopen("rj.in","r");
fscanf(f,"%d%d",&m,&n);
fgets(t,5,f);
while(!feof(f))
{fscanf(f,"%c",&c);
if(c=='R'||c=='J')
{a[i][j].r=a[i][j++].j=-2;
if(c=='R')
{ro.x=i;ro.y=j-1;}
if(c=='J')
{ju.x=i;ju.y=j-1;}}
else
if(c=='X')
a[i][j].r=a[i][j++].j=-1;
else
if(c==' ')
j++;
else
if(c=='\n')
{i++;j=1;}}
fclose(f);
bordare();
lee1();
lee2();
for(i=0;i<=n+1;i++)
{for(j=0;j<=m+1;j++)
if(a[i][j].r>0&&a[i][j].r==(a[i][j].r+a[i][j].j)/2)
if(a[i][j].r<minimum)
{minimum=a[i][j].r;p.x=i;p.y=j;}}
FILE *g=fopen("rj.out","w");
fprintf(g,"%d %d %d\n",minimum+1,p.x,p.y);
fclose(g);
return 0;
}