type nod=record
x,y:integer;
end;
var a:array[0..101,0..101] of char;
r,j:array[1..100,1..100] of integer;
lc,min,n,m,i,k,xr,xj,yr,yj:integer;
s:string;
c:array[1..10000] of nod;
procedure apelr(x,y:integer);
begin
r[x,y]:=1;
lc:=1; c[1].x:=x; c[1].y:=y;
i:=1;
while i<=lc do
begin
if (a[c[i].x,c[i].y-1]<>'X')and(r[c[i].x,c[i].y-1]=-1) then
begin
r[c[i].x,c[i].y-1]:=r[c[i].x,c[i].y]+1;
inc(lc);
c[lc].x:=c[i].x;
c[lc].y:=c[i].y-1;
end;
if (a[c[i].x,c[i].y+1]<>'X')and(r[c[i].x,c[i].y+1]=-1) then
begin
r[c[i].x,c[i].y+1]:=r[c[i].x,c[i].y]+1;
inc(lc);
c[lc].x:=c[i].x;
c[lc].y:=c[i].y+1;
end;
if (a[c[i].x-1,c[i].y-1]<>'X')and(r[c[i].x-1,c[i].y-1]=-1) then
begin
r[c[i].x-1,c[i].y-1]:=r[c[i].x,c[i].y]+1;
inc(lc);
c[lc].x:=c[i].x-1;
c[lc].y:=c[i].y-1;
end;
if (a[c[i].x-1,c[i].y]<>'X')and(r[c[i].x-1,c[i].y]=-1) then
begin
r[c[i].x-1,c[i].y]:=r[c[i].x,c[i].y]+1;
inc(lc);
c[lc].x:=c[i].x-1;
c[lc].y:=c[i].y;
end;
if (a[c[i].x-1,c[i].y+1]<>'X')and(r[c[i].x-1,c[i].y+1]=-1) then
begin
r[c[i].x-1,c[i].y+1]:=r[c[i].x,c[i].y]+1;
inc(lc);
c[lc].x:=c[i].x-1;
c[lc].y:=c[i].y+1;
end;
if (a[c[i].x+1,c[i].y-1]<>'X')and(r[c[i].x+1,c[i].y-1]=-1) then
begin
r[c[i].x+1,c[i].y-1]:=r[c[i].x,c[i].y]+1;
inc(lc);
c[lc].x:=c[i].x+1;
c[lc].y:=c[i].y-1;
end;
if (a[c[i].x+1,c[i].y]<>'X')and(r[c[i].x+1,c[i].y]=-1) then
begin
r[c[i].x+1,c[i].y]:=r[c[i].x,c[i].y]+1;
inc(lc);
c[lc].x:=c[i].x+1;
c[lc].y:=c[i].y;
end;
if (a[c[i].x+1,c[i].y+1]<>'X')and(r[c[i].x+1,c[i].y+1]=-1) then
begin
r[c[i].x+1,c[i].y+1]:=r[c[i].x,c[i].y]+1;
inc(lc);
c[lc].x:=c[i].x+1;
c[lc].y:=c[i].y+1;
end;
inc(i);
end;
end;
procedure apelj(x,y:integer);
begin
j[x,y]:=1;
lc:=1; c[1].x:=x; c[1].y:=y;
i:=1;
while i<=lc do
begin
if (a[c[i].x,c[i].y-1]<>'X')and(j[c[i].x,c[i].y-1]=-1) then
begin
j[c[i].x,c[i].y-1]:=j[c[i].x,c[i].y]+1;
inc(lc);
c[lc].x:=c[i].x;
c[lc].y:=c[i].y-1;
end;
if (a[c[i].x,c[i].y+1]<>'X')and(j[c[i].x,c[i].y+1]=-1) then
begin
j[c[i].x,c[i].y+1]:=j[c[i].x,c[i].y]+1;
inc(lc);
c[lc].x:=c[i].x;
c[lc].y:=c[i].y+1;
end;
if (a[c[i].x-1,c[i].y-1]<>'X')and(j[c[i].x-1,c[i].y-1]=-1) then
begin
j[c[i].x-1,c[i].y-1]:=j[c[i].x,c[i].y]+1;
inc(lc);
c[lc].x:=c[i].x-1;
c[lc].y:=c[i].y-1;
end;
if (a[c[i].x-1,c[i].y]<>'X')and(j[c[i].x-1,c[i].y]=-1) then
begin
j[c[i].x-1,c[i].y]:=j[c[i].x,c[i].y]+1;
inc(lc);
c[lc].x:=c[i].x-1;
c[lc].y:=c[i].y;
end;
if (a[c[i].x-1,c[i].y+1]<>'X')and(j[c[i].x-1,c[i].y+1]=-1) then
begin
j[c[i].x-1,c[i].y+1]:=j[c[i].x,c[i].y]+1;
inc(lc);
c[lc].x:=c[i].x-1;
c[lc].y:=c[i].y+1;
end;
if (a[c[i].x+1,c[i].y-1]<>'X')and(j[c[i].x+1,c[i].y-1]=-1) then
begin
j[c[i].x+1,c[i].y-1]:=j[c[i].x,c[i].y]+1;
inc(lc);
c[lc].x:=c[i].x+1;
c[lc].y:=c[i].y-1;
end;
if (a[c[i].x+1,c[i].y]<>'X')and(j[c[i].x+1,c[i].y]=-1) then
begin
j[c[i].x+1,c[i].y]:=j[c[i].x,c[i].y]+1;
inc(lc);
c[lc].x:=c[i].x+1;
c[lc].y:=c[i].y;
end;
if (a[c[i].x+1,c[i].y+1]<>'X')and(j[c[i].x+1,c[i].y+1]=-1) then
begin
j[c[i].x+1,c[i].y+1]:=j[c[i].x,c[i].y]+1;
inc(lc);
c[lc].x:=c[i].x+1;
c[lc].y:=c[i].y+1;
end;
inc(i);
end;
end;
begin
assign(input,'rj.in'); reset(input);
assign(output,'rj.out'); rewrite(output);
readln(n,m);
for i:=1 to n do
begin
readln(s);
for k:=1 to m do
begin
a[i,k]:=s[k];
r[i,k]:=-1; j[i,k]:=-1;
if a[i,k]='R' then begin xr:=i; yr:=k; end
else if a[i,k]='J' then begin xj:=i; yj:=k; end;
end;
end;
for i:=0 to n+1 do
begin
a[i,0]:='X'; a[i,m+1]:='X';
end;
for i:=0 to m+1 do
begin
a[0,i]:='X'; a[n+1,i]:='X';
end;
apelr(xr,yr);
apelj(xj,yj);
min:=n*m+1;
for i:=1 to n do
for k:=1 to m do
if (r[i,k]=j[i,k])and(r[i,k]<min)and(r[i,k]<>-1) then
begin
min:=r[i,k]; xr:=i; yr:=k;
end;
writeln(min,' ',xr,' ',yr);
close(input); close(output);
end.