#include<fstream>
#define FIN "rj.in"
#define FOUT "rj.out"
#define DimMax 102
#define DimMaxCoada 10404
using namespace std;
ifstream fin(FIN);
ofstream fout(FOUT);
void read();
void solve(int lr,int cr,int aa[DimMax][DimMax]);
void write();
int n,m,i,j,lr,cr,lj,cj,k,minim,lin,col;
int dx[]={0, 1, 0, -1, -1, 1, -1, 1},dy[]={1, 0, -1, 0, -1, 1, 1,-1};
char a[DimMax][DimMax],c;
int R[DimMax][DimMax],J[DimMax][DimMax];
int main()
{
read();
solve(lr,cr,R);
solve(lj,cj,J);
write();
fout.close();
return 0;
}
void read()
{
fin>>n>>m;
fin.get(c);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
fin.get(a[i][j]);
if(a[i][j]=='R')
lr=i,cr=j;
else if(a[i][j]=='J')
lj=i,cj=j;
}
fin.get(c);
}
for(i=0;i<=n+1;i++)
a[i][0]=a[i][m+1]='X';
for(i=0;i<=m+1;i++)
a[0][i]=a[n+1][i]='X';
a[lj][cj]=a[lr][cr]=' ';
}
void solve(int ll,int cc,int aa[DimMax][DimMax])
{
struct Lee
{
int l,c;
unsigned d;
}C[DimMaxCoada],x,y;
int inc=0,sf=0;
for(i=0;i<=n+1;i++)
for(j=0;j<=m+1;j++)
aa[i][j]=-1;
x.l=ll;
x.c=cc;
x.d=1;
aa[ll][cc]=1;
C[inc]=x;
while(inc<=sf)
{
x=C[inc++];
for(k=0;k<8;k++)
{
y.l=x.l+dx[k];
y.c=x.c+dy[k];
if(a[y.l][y.c]==' '&&aa[y.l][y.c]==-1)
{
y.d=x.d+1;
aa[y.l][y.c]=y.d;
C[++sf]=y;
}
}
}
}
void write()
{
minim=9999;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(R[i][j]==J[i][j])
if(R[i][j]<minim&&R[i][j]!=-1)
minim=R[i][j],lin=i,col=j;
fout<<minim<<' '<<lin<<' '<<col;
}