#include<stdio.h>
int a[101][101],b[101][101];
char el;
unsigned char x[10001],y[10001];
//int huge d[10001];
FILE *f,*g;
int main()
{
// puts("SDFGSDFGSF");
int n,m,i,j,jx,jy,rx,ry,min,p,u,gas=0,xv,yv;
f=fopen("rj.in","r");
g=fopen("rj.out","w");
fscanf(f,"%d",&n);
fscanf(f,"%d",&m);
fscanf(f,"%c",&el);
for(i=1;i<=n;i++)
{ for(j=1;j<=m;j++)
{
fscanf(f,"%c",&el);
if(el=='x'||el=='X')
{ a[i][j]=-1;
b[i][j]=-1;
}
else
{ if(el=='r'||el=='R')
{ a[i][j]=1;
b[i][j]=1;
rx=i;
ry=j;
}
else
{ if(el=='j'||el=='J')
{
a[i][j]=-2;
b[i][j]=-2;
jx=i;
jy=j;
}
else
if(el==' ')
{ a[i][j]=0;
b[i][j]=0;
}
}
}
}
fscanf(f,"%c",&el); //ca sa treaca la linia urmatoare
}
int dx[]={-1,-1,0,1,1,1,0,-1};
int dy[]={0,1,1,1,0,-1,-1,-1};
p=0; //pozitia curenta
u=0; //ultima pozitie (indici in vector)
x[0]=rx;y[0]=ry;
a[rx][ry]=1;
while (p<=u) //cat timp mai am elem in coada si nu am gasit pe julieta
{
for(i=0;i<8;i++)
{
xv=x[p]+dx[i];
yv=y[p]+dy[i]; // x vecin si y vecin
if (a[xv][yv]==0&&xv>0&&yv>0&&xv<=n&&yv<=m) //daca nu e zid
{
u++;
x[u]=xv;
y[u]=yv;
a[xv][yv]=a[x[p]][y[p]]+1;
}
}
p++;
}
x[0]=jx;y[0]=jy;
p=0;
u=0;
b[jx][jy]=1;
gas=0;
while (p<=u&&gas==0)
{
for(i=0;i<8;i++)
{
xv=x[p]+dx[i];
yv=y[p]+dy[i];
if(b[xv][yv]==0&&xv>0&&yv>0&&xv<=n&&yv<=m)
{
u++;
x[u]=xv;
y[u]=yv;
b[xv][yv]=b[x[p]][y[p]]+1;
if(b[xv][yv]==a[xv][yv])
{ gas=1;
fprintf(g,"%d %d %d ",a[xv][yv],xv,yv);
fcloseall();
return 0;
}
}
}
p++;
}
fcloseall();
return 0;
}