type matrice= array[0..101,0..101] of integer;
const dx : array[1..8]of integer = (-1,-1,-1,0,0,1,1,1);
dy : array[1..8]of integer =(-1,0,1,-1,1,-1,0,1);
var a,b :matrice;
ma : array[1..100,1..100] of char;
c : char;
f,g : text;
n,i,j,m,k,xx,yy,x,y,ij,jj,ri,rj,ii,min : integer;
ok : boolean;
procedure citire(var a : matrice;var n,m,ij,jj,ri,rj : integer);
var i,j : integer;
begin
assign(f,'rj.in'); reset(f);
assign(g,'rj.out'); rewrite(g);
read(f,n,m);read(f,c); read(f,c);
for i:=1 to n do begin
for j:=1 to m do read(f,ma[i,j]);
readln(f);
end;
for i:=1 to n do begin
for j:=1 to m do begin
case ma[i,j] of
' ' : a[i,j]:=0;
'X' : a[i,j]:=-1;
'x' : a[i,j]:=-1;
'R' : begin
a[i,j]:=1;
ri:=i;
rj:=j;
end;
'J' : begin
a[i,j]:=-1;
ij:=i;
jj:=j;
end;
end;
end;
end;
end;
procedure rom(var drum : matrice);
begin
repeat
ok:=true;
for i:=1 to n do
for j:=1 to m do
begin
x:=i; y:=j;
if drum[i,j]>0 then
begin
for k:=1 to 8 do
begin
xx:=x+dx[k];
yy:=y+dy[k];
if drum[xx,yy]=0 then begin drum[xx,yy]:=drum[i,j]+1;
ok:=false;
end
else
if drum[xx,yy]>drum[i,j]+1 then begin drum[xx,yy]:=drum[i,j]+1;
ok:=false;
end;
end;
end;
end;
until ok;
end;
begin
citire(a,n,m,ij,jj,ri,rj);
b:=a; b[ri,rj]:=-1;
rom(a);
b[ij,jj]:=1;
rom(b);
min:=maxint;
for i:=1 to n do
for j:=1 to m do
if (a[i,j]=b[i,j]) and (a[i,j]>=1)
then if a[i,j]<min then begin
min:=a[i,j]; ii:=i; jj:=j;
end
else if a[i,j]=min then begin
if j<jj then begin
ii:=i;
jj:=j;
end;
end;
writeln(g,min,' ',ii,' ',jj);
close(g);
end.