// rj
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
int a[101][101],m,n,maxim,rxi,ryi,jxi,jyi,rjx,rjy;
void harta(int ha[101][101], int xi, int yi)
{
int x,y,xn,yn,k,i,j,bec,l[10000],c[10000];
int dx[]={-1,0,1,0,1,1,-1,-1};
int dy[]={0,-1,0,1,1,-1,1,-1};
ha[xi][yi]=1;
l[0]=xi, c[0]=yi;
k=1;
bec=0;
for(i=1;i<=k||!bec;i++)
{
x=l[i-1]; y=c[i-1]; bec=1;
for(j=0;j<8;j++)
{
xn=x+dx[j];
yn=y+dy[j];
if(a[xn][yn]==0&&ha[xn][yn]==0)
{
bec=0;
ha[xn][yn]=ha[x][y]+1;
if(maxim<ha[xn][yn]) maxim=ha[xn][yn];
l[k]=xn;
c[k++]=yn;
}
}
}
}
int main()
{
char c[101];
int i,j;
int ro[101][101],ju[101][101];
ifstream f("rj.in");
ofstream g("rj.out");
f>>n>>m;
f.getline(c,1);
for(i=1;i<=n;i++)
{
f.getline(c,m+1);
for(j=1;j<=m;j++)
{
if(c[j-1]=='X') a[i][j]=-1;
if(c[j-1]=='R') rxi=i, ryi=j;
if(c[j-1]=='J') jxi=i, jyi=j;
ro[i][j]=0, ju[i][j]=0;
}
}
for(i=0;i<=m;i++) // bordare
{
a[0][i]=-1;
a[n+1][i]=-1;
}
for(i=0;i<=n;i++)
{
a[i][0]=-1;
a[i][m+1]=-1;
}
harta (ro,rxi,ryi);
harta (ju,jxi,jyi);
maxim=10000;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(ro[i][j]==ju[i][j]&&ro[i][j]!=0&&ro[i][j]<maxim)
{
maxim=ro[i][j];
rjx=i;
rjy=j;
}
g<<ro[rjx][rjy]<<" "<<rjx<<" "<<rjy<<"\n";
f.close();
g.close();
return 0;
}