import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class collatz
{
	static int vb;
	static int va;
	static int v;
	public static int sudy(int a)
	{
		return a/2;
	}
	
	public static int lichy(int a)
	{
		return (3*a+1);
	}
	
	public static int vypocti(int a)
	{
		if(a%2 == 0)
			return (sudy(a));
		else
			return (lichy(a));
	}
	

	public static boolean obsahuje(int[]vysledkyA, int[]vysledkyB, int k)
	{
		for (int j = 0; j < k; j++)
		{
			if (vysledkyA[j] == vysledkyB[k] || vysledkyA[j] == vysledkyB[k-1])
			{
				va = j; v = vysledkyA[j];
				if (vysledkyA[j] == vysledkyB[k])
					vb = k;
				else
					vb = k-1;
				
				return true;
			}
		}

		for(int i = 0; i < k;i++)
		{
			if (vysledkyA[k] == vysledkyB[i]||vysledkyA[k-1] == vysledkyB[i])
			{
				vb = i; v = vysledkyB[i];
				if (vysledkyA[k] == vysledkyB[i])
					va = k;
				else
					va = k-1;
				
				return true;
			}
		}
		return false;
	}
	
	public static int uloha(int a, int b)
	{
		int[] vysledkyA = new int[100000];
		int[] vysledkyB = new int[100000];
		vysledkyA[0] = a;
		vysledkyB[0] = b;
		int i = 1;
		
		boolean schoda = false;
		
		while (!schoda)
		{
			a = vypocti(a);
			b = vypocti(b);
			vysledkyA[i] = a;
			vysledkyB[i] = b;
			boolean aob = obsahuje(vysledkyA, vysledkyB, i);
			if (a == b || aob)
			{
				schoda = true;
				return i;
			}
			i++;
		}
		return 0;
	}
	
	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String s;
		int m, a, b;
		while(true)
		{
			s = br.readLine();
			m = s.indexOf(" ");
			b = Integer.valueOf(s.substring(m+1));
			a = Integer.valueOf(s.substring(0,m));
//			System.out.println("a = " + a + " b = " +b);
			int i = uloha(a, b);
			if (a == 0 && b == 0) break;
			System.out.println("" + a + " needs " + va + " steps, " + b + " needs " + vb + " steps, they meet at " + v);
		}
	}

}
