type matrice= array[1..100] of string;
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;
s : string;
f,g : text;
n,i,j,m,k,xx,yy,x,y,ij,jj,ri,rj,ii,min,ver,code : integer;
ok : boolean;
procedure citire(var a : matrice;var n,m,ij,jj,ri,rj : integer);
var i,j,k : integer;
begin
assign(f,'rj.in'); reset(f);
assign(g,'rj.out'); rewrite(g);
read(f,n,m); readln(f);
for i:=1 to n do begin
readln(f,a[i]);
if length(a[i])<>m then for k:=1 to m-length(a[i])+1 do a[i]:=a[i]+' ';
for j:=1 to m do begin
case a[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]:='0';
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') and (drum[i,j]<>'X') then
begin
for k:=1 to 8 do
begin
xx:=x+dx[k];
yy:=y+dy[k];
if (xx>0) and (yy>0) and (xx<=n) and (yy<=m)
and (drum[xx][yy]<>'X')
then
begin
if drum[xx][yy]='0' then begin
drum[xx][yy]:=chr(ord(drum[i][j])+1);
ok:=false;
end
else
if ord(drum[xx][yy])>ord(drum[i][j])+1
then begin drum[xx][yy]:=chr(ord(drum[i][j])+1);
ok:=false;
end;
end;
end;
end;
end;
until ok;
end;
begin
citire(a,n,m,ij,jj,ri,rj);
b:=a; b[ri,rj]:='0';
rom(a);
b[ij,jj]:='1';
rom(b);
min:=maxint;
for i:=1 to n do
for j:=1 to m do
begin
val(a[i,j],ver,code);
if (a[i][j]=b[i][j]) and (a[i][j]>='1') and (a[i][j]<>'X')
then BEGIN
if ver<min then begin
min:=ord(a[i][j])-48; ii:=i; jj:=j;
end
else if ver=min then begin
if j<jj then begin
ii:=i;
jj:=j;
end;
end;END;
end;
writeln(g,min,' ',ii,' ',jj);
close(g);
end.