#include <fstream>
#include <iostream>
using namespace std;
short int r[101][101],jl[101][101],n,m,srx,sry,sjx,sjy;
void citire(); void Romeo(); void Julieta(); void afisare();
int main()
{
citire();
Romeo();
Julieta();
afisare();
return 0;
}
void Romeo()
{
const short int dx[]={1,0,-1,0,1,-1,1,-1};
const short int dy[]={0,1,0,-1,1,-1,-1,1};
struct Coada
{
short int x;
short int y;
}q[10202];
q[1].x=srx;
q[1].y=sry;
int SfC=1,StC=0;
int x2,y2;
while(StC<=SfC)
{
StC++;
for(int i=0;i<8;i++)
{
x2=q[StC].x+dx[i]; y2=q[StC].y+dy[i];
if(r[x2][y2]==-1&&x2>=1&&y2>=1&&x2<=n&&y2<=m)
{
SfC++;
q[SfC].x=x2;
q[SfC].y=y2;
r[x2][y2]=r[q[StC].x][q[StC].y]+1;
}
}
}
}
void Julieta()
{
const short int dx[]={1,0,-1,0,1,-1,1,-1};
const short int dy[]={0,1,0,-1,1,-1,-1,1};
struct Coada
{
short int x;
short int y;
}q[10202];
q[1].x=sjx;
q[1].y=sjy;
int SfC=1,StC=0;
int x2,y2;
while(StC<=SfC)
{
StC++;
for(int i=0;i<8;i++)
{
x2=q[StC].x+dx[i]; y2=q[StC].y+dy[i];
if(jl[x2][y2]==-1&&x2>=1&&y2>=1&&x2<=n&&y2<=m)
{
SfC++;
q[SfC].x=x2;
q[SfC].y=y2;
jl[x2][y2]=jl[q[StC].x][q[StC].y]+1;
}
}
}
}
void afisare()
{
int pasmin=9999999,x=-1,y=-1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(r[i][j]==jl[i][j]&&r[i][j]<pasmin)
{
if(r[i][j]>0)
{
pasmin=r[i][j];
x=i;
y=j;
}
}
}
}
ofstream fout("rj.out");
fout<<pasmin<<" "<<x<<" "<<y;
fout.close();
}
void citire()
{
ifstream fin("rj.in");
fin>>n>>m;
char aux[101];
for(int i=1;i<=n;i++)
{
fin.get();
fin.get(aux,101);
for(int j=0;j<m;j++)
{
if(aux[j]=='R')
{
r[i][j+1]=1;
jl[i][j+1]=-2;
srx=i;
sry=j+1;
}
else if(aux[j]=='J')
{
jl[i][j+1]=1;
r[i][j+1]=-2;
sjx=i;
sjy=j+1;
}
else if(aux[j]==' ')
{
jl[i][j+1]=r[i][j+1]=-1;
}
else
{
jl[i][j+1]=r[i][j+1]=-2;
}
}
}
fin.close();
}