#include <fstream>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int dx[]={0,0,1,-1,1,-1,-1,1};
int dy[]={1,-1,0,0,1,-1,1,-1};
string sir;
int i,j,n,m,startRx,startRy,startJx,startJy,k,a[102][102],b[102][102];
struct abc
{
int x,y,nr;
}v[10008];
struct abc2
{
int x,y;
}c[10008];
bool cmp(abc a,abc b)
{
if(a.nr==b.nr)
{
if(a.x==b.x)
return a.y<b.y;
return a.x<b.x;
}
return a.nr<b.nr;
}
void lee1(int startx, int starty)
{
int p,u,xi,yi,xc,yc;
c[1].x=startx;
c[1].y=starty;
a[startx][starty]=1;
p=1;
u=1;
while(p<=u)
{
xi=c[p].x;
yi=c[p].y;
for(i=0;i<8;i++)
{
xc=xi+dx[i];
yc=yi+dy[i];
if(a[xc][yc]==0)
{
a[xc][yc]=a[xi][yi]+1;
c[++u].x=xc;
c[u].y=yc;
}
}
++p;
}
}
void lee2(int startx, int starty)
{
int p,u,xi,yi,xc,yc;
c[1].x=startx;
c[1].y=starty;
b[startx][starty]=1;
p=1;
u=1;
while(p<=u)
{
xi=c[p].x;
yi=c[p].y;
for(i=0;i<8;i++)
{
xc=xi+dx[i];
yc=yi+dy[i];
if(b[xc][yc]==0)
{
b[xc][yc]=b[xi][yi]+1;
c[++u].x=xc;
c[u].y=yc;
}
}
++p;
}
}
int main()
{
f>>n>>m;
getline(f,sir);
for(i=1;i<=n;i++)
{
getline(f,sir);
for(j=0;j<m;j++)
{
if(sir[j]=='X')
b[i][j+1]=a[i][j+1]=-1;
if(sir[j]=='R')
{
startRx=i;
startRy=j+1;
}
if(sir[j]=='J')
{
startJx=i;
startJy=j+1;
}
}
}
for(i=0;i<=n+1;i++)
{
a[i][0]=b[i][0]=a[i][m+1]=b[i][m+1]=-1;
}
for(j=0;j<=m+1;j++)
{
a[0][j]=a[n+1][j]=b[0][j]=b[n+1][j]=-1;
}
lee1(startRx,startRy);
lee2(startJx,startJy);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(a[i][j]==b[i][j]&&a[i][j]!=-1&&a[i][j]!=0)
{
v[++k].nr=a[i][j];
v[k].x=i;
v[k].y=j;
}
}
}
sort(v+1,v+k+1,cmp);
g<<v[1].nr<<' '<<v[1].x<<' '<<v[1].y;
return 0;
}