type  pcislobin=^cislobin;
      cislobin=record
       c,k:integer;
       n1,n2:pcislobin;
      end;
var a,b,aa,bb,ak,bk,n:integer;
    ap,bp,p,p2:pcislobin;
    nasiel:boolean;

function najbl(q:pcislobin;c:integer):pcislobin;
var q2:pcislobin;
begin
 while (q<>nil) and (q2^.c<>c) do
  begin
   q2:=q;
   if c>q^.c then q:=q^.n1 else q:=q^.n2;
  end;
 najbl:=q2;
end;

begin
 readln(a,b);
 while (a<>0) and (b<>0) do
 begin
 aa:=a;bb:=b;
 ap:=new(pcislobin);
 ap^.k:=0;
 ap^.c:=a;
 ap^.n1:=nil;
 ap^.n2:=nil;
 bp:=new(pcislobin);
 bp^.c:=b;
 bp^.k:=0;
 bp^.n1:=nil;
 bp^.n2:=nil;
 ak:=0;
 bk:=0;
 n:=a; 

 if a=b then nasiel:=true else nasiel:=false;
 while nasiel=false do
  begin
   inc(ak);
   inc(bk);
   if a<>1 then
    begin
     if a mod 2=0 then a:=a div 2 else a:=a*3+1;
     p:=najbl(bp,a);
//     writeln('a: najbl k ',a,' je ',p^.c);
     if p^.c=a then
      begin
       nasiel:=true;n:=a;
       bk:=p^.k;
      end;
     p:=new(pcislobin);
     p^.k:=ak;
     p^.c:=a;
     p^.n1:=nil;
     p^.n2:=nil;
     p2:=najbl(ap,a);
     if a>p2^.c then p2^.n1:=p else p2^.n2:=p;
    end;
   if b<>1 then
    begin
     if b mod 2=0 then b:=b div 2 else b:=b*3+1;
     p:=najbl(ap,b);
//     writeln('b: najbl k ',b,' je ',p^.c);
     if p^.c=b then
      begin
       nasiel:=true;n:=b;
       ak:=p^.k;
      end;
     p:=new(pcislobin);
     p^.k:=bk;
     p^.c:=b;
     p^.n1:=nil;
     p^.n2:=nil;
     p2:=najbl(bp,b);
     if b>p2^.c then p2^.n1:=p else p2^.n2:=p;
    end;
  end;
 writeln(aa,' needs ',ak,' steps, ',bb,' needs ',bk,' steps, they meet at ',n);
 readln(a,b);
 end;
end.
