import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int s = getInt(sc);

		List<Integer> a = new ArrayList<>();
		a.add(s);
		for (int i = 0;; i++) {
			int fn = function(a.get(i));
			if (a.contains(fn)) {
				System.out.println(a.size() + 1);
				break;
			} else {
				a.add(fn);
			}
		}

	}

	private static int function(int n) {

		if (n % 2 == 0) {
			return n / 2;
		} else {
			return n * 3 + 1;
		}
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をlongで返却
	 *
	 * @return
	 */
	public static long getLong(Scanner sc) {

		return Long.parseLong(sc.next());
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をintで返却
	 *
	 * @return
	 */
	public static int getInt(Scanner sc) {

		return Integer.parseInt(sc.next());
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をStringで返却
	 *
	 * @return
	 */
	public static String getString(Scanner sc) {

		return sc.next();
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をint配列で返却
	 *
	 * @return
	 */
	public static int[] getIntArray(Scanner sc) {
		String line = "";
		// 直前にnext()を実行していると改行コードだけ取ってしまうのでその対策
		while (line.equals("")) {
			line = sc.nextLine();
		}

		String[] strArray = line.split(" ");
		int[] intArray = new int[strArray.length];
		for (int i = 0; i < strArray.length; i++) {
			intArray[i] = Integer.parseInt(strArray[i]);
		}
		return intArray;
	}

} import java.util.ArrayList; ArrayList java.util import java.util.List; List java.util import java.util.Scanner; Scanner java.util public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int s = getInt(sc);

		List<Integer> a = new ArrayList<>();
		a.add(s);
		for (int i = 0;; i++) {
			int fn = function(a.get(i));
			if (a.contains(fn)) {
				System.out.println(a.size() + 1);
				break;
			} else {
				a.add(fn);
			}
		}

	}

	private static int function(int n) {

		if (n % 2 == 0) {
			return n / 2;
		} else {
			return n * 3 + 1;
		}
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をlongで返却
	 *
	 * @return
	 */
	public static long getLong(Scanner sc) {

		return Long.parseLong(sc.next());
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をintで返却
	 *
	 * @return
	 */
	public static int getInt(Scanner sc) {

		return Integer.parseInt(sc.next());
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をStringで返却
	 *
	 * @return
	 */
	public static String getString(Scanner sc) {

		return sc.next();
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をint配列で返却
	 *
	 * @return
	 */
	public static int[] getIntArray(Scanner sc) {
		String line = "";
		// 直前にnext()を実行していると改行コードだけ取ってしまうのでその対策
		while (line.equals("")) {
			line = sc.nextLine();
		}

		String[] strArray = line.split(" ");
		int[] intArray = new int[strArray.length];
		for (int i = 0; i < strArray.length; i++) {
			intArray[i] = Integer.parseInt(strArray[i]);
		}
		return intArray;
	}

} Main public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int s = getInt(sc);

		List<Integer> a = new ArrayList<>();
		a.add(s);
		for (int i = 0;; i++) {
			int fn = function(a.get(i));
			if (a.contains(fn)) {
				System.out.println(a.size() + 1);
				break;
			} else {
				a.add(fn);
			}
		}

	} main {
		Scanner sc = new Scanner(System.in);
		int s = getInt(sc);

		List<Integer> a = new ArrayList<>();
		a.add(s);
		for (int i = 0;; i++) {
			int fn = function(a.get(i));
			if (a.contains(fn)) {
				System.out.println(a.size() + 1);
				break;
			} else {
				a.add(fn);
			}
		}

	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int s = getInt(sc); s getInt(sc) getInt sc List<Integer> a = new ArrayList<>(); a new ArrayList<>() a.add(s) a.add a s for (int i = 0;; i++) {
			int fn = function(a.get(i));
			if (a.contains(fn)) {
				System.out.println(a.size() + 1);
				break;
			} else {
				a.add(fn);
			}
		} int i = 0; int i = 0; i 0 i++ i++ i {
			int fn = function(a.get(i));
			if (a.contains(fn)) {
				System.out.println(a.size() + 1);
				break;
			} else {
				a.add(fn);
			}
		} {
			int fn = function(a.get(i));
			if (a.contains(fn)) {
				System.out.println(a.size() + 1);
				break;
			} else {
				a.add(fn);
			}
		} int fn = function(a.get(i)); fn function(a.get(i)) function a.get(i) a.get a i if (a.contains(fn)) {
				System.out.println(a.size() + 1);
				break;
			} else {
				a.add(fn);
			} a.contains(fn) a.contains a fn {
				System.out.println(a.size() + 1);
				break;
			} System.out.println(a.size() + 1) System.out.println System.out System System.out a.size() + 1 a.size() a.size a 1 break; {
				a.add(fn);
			} a.add(fn) a.add a fn String[] args args private static int function(int n) {

		if (n % 2 == 0) {
			return n / 2;
		} else {
			return n * 3 + 1;
		}
	} function {

		if (n % 2 == 0) {
			return n / 2;
		} else {
			return n * 3 + 1;
		}
	} if (n % 2 == 0) {
			return n / 2;
		} else {
			return n * 3 + 1;
		} n % 2 == 0 n % 2 n 2 0 {
			return n / 2;
		} return n / 2; n / 2 n 2 {
			return n * 3 + 1;
		} return n * 3 + 1; n * 3 + 1 n * 3 n 3 1 int n n /**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をlongで返却
	 *
	 * @return
	 */
	public static long getLong(Scanner sc) {

		return Long.parseLong(sc.next());
	} getLong {

		return Long.parseLong(sc.next());
	} return Long.parseLong(sc.next()); Long.parseLong(sc.next()) Long.parseLong Long sc.next() sc.next sc Scanner sc sc /**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をintで返却
	 *
	 * @return
	 */
	public static int getInt(Scanner sc) {

		return Integer.parseInt(sc.next());
	} getInt {

		return Integer.parseInt(sc.next());
	} return Integer.parseInt(sc.next()); Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc Scanner sc sc /**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をStringで返却
	 *
	 * @return
	 */
	public static String getString(Scanner sc) {

		return sc.next();
	} getString {

		return sc.next();
	} return sc.next(); sc.next() sc.next sc Scanner sc sc /**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をint配列で返却
	 *
	 * @return
	 */
	public static int[] getIntArray(Scanner sc) {
		String line = "";
		// 直前にnext()を実行していると改行コードだけ取ってしまうのでその対策
		while (line.equals("")) {
			line = sc.nextLine();
		}

		String[] strArray = line.split(" ");
		int[] intArray = new int[strArray.length];
		for (int i = 0; i < strArray.length; i++) {
			intArray[i] = Integer.parseInt(strArray[i]);
		}
		return intArray;
	} getIntArray {
		String line = "";
		// 直前にnext()を実行していると改行コードだけ取ってしまうのでその対策
		while (line.equals("")) {
			line = sc.nextLine();
		}

		String[] strArray = line.split(" ");
		int[] intArray = new int[strArray.length];
		for (int i = 0; i < strArray.length; i++) {
			intArray[i] = Integer.parseInt(strArray[i]);
		}
		return intArray;
	} String line = ""; line "" while (line.equals("")) {
			line = sc.nextLine();
		} line.equals("") line.equals line "" {
			line = sc.nextLine();
		} line = sc.nextLine() line sc.nextLine() sc.nextLine sc String[] strArray = line.split(" "); strArray line.split(" ") line.split line " " int[] intArray = new int[strArray.length]; intArray new int[strArray.length] strArray.length strArray strArray.length for (int i = 0; i < strArray.length; i++) {
			intArray[i] = Integer.parseInt(strArray[i]);
		} int i = 0; int i = 0; i 0 i < strArray.length i strArray.length strArray strArray.length i++ i++ i {
			intArray[i] = Integer.parseInt(strArray[i]);
		} {
			intArray[i] = Integer.parseInt(strArray[i]);
		} intArray[i] = Integer.parseInt(strArray[i]) intArray[i] intArray i Integer.parseInt(strArray[i]) Integer.parseInt Integer strArray[i] strArray i return intArray; intArray Scanner sc sc public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int s = getInt(sc);

		List<Integer> a = new ArrayList<>();
		a.add(s);
		for (int i = 0;; i++) {
			int fn = function(a.get(i));
			if (a.contains(fn)) {
				System.out.println(a.size() + 1);
				break;
			} else {
				a.add(fn);
			}
		}

	}

	private static int function(int n) {

		if (n % 2 == 0) {
			return n / 2;
		} else {
			return n * 3 + 1;
		}
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をlongで返却
	 *
	 * @return
	 */
	public static long getLong(Scanner sc) {

		return Long.parseLong(sc.next());
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をintで返却
	 *
	 * @return
	 */
	public static int getInt(Scanner sc) {

		return Integer.parseInt(sc.next());
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をStringで返却
	 *
	 * @return
	 */
	public static String getString(Scanner sc) {

		return sc.next();
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をint配列で返却
	 *
	 * @return
	 */
	public static int[] getIntArray(Scanner sc) {
		String line = "";
		// 直前にnext()を実行していると改行コードだけ取ってしまうのでその対策
		while (line.equals("")) {
			line = sc.nextLine();
		}

		String[] strArray = line.split(" ");
		int[] intArray = new int[strArray.length];
		for (int i = 0; i < strArray.length; i++) {
			intArray[i] = Integer.parseInt(strArray[i]);
		}
		return intArray;
	}

} public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int s = getInt(sc);

		List<Integer> a = new ArrayList<>();
		a.add(s);
		for (int i = 0;; i++) {
			int fn = function(a.get(i));
			if (a.contains(fn)) {
				System.out.println(a.size() + 1);
				break;
			} else {
				a.add(fn);
			}
		}

	}

	private static int function(int n) {

		if (n % 2 == 0) {
			return n / 2;
		} else {
			return n * 3 + 1;
		}
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をlongで返却
	 *
	 * @return
	 */
	public static long getLong(Scanner sc) {

		return Long.parseLong(sc.next());
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をintで返却
	 *
	 * @return
	 */
	public static int getInt(Scanner sc) {

		return Integer.parseInt(sc.next());
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をStringで返却
	 *
	 * @return
	 */
	public static String getString(Scanner sc) {

		return sc.next();
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をint配列で返却
	 *
	 * @return
	 */
	public static int[] getIntArray(Scanner sc) {
		String line = "";
		// 直前にnext()を実行していると改行コードだけ取ってしまうのでその対策
		while (line.equals("")) {
			line = sc.nextLine();
		}

		String[] strArray = line.split(" ");
		int[] intArray = new int[strArray.length];
		for (int i = 0; i < strArray.length; i++) {
			intArray[i] = Integer.parseInt(strArray[i]);
		}
		return intArray;
	}

} Main
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int s = getInt(sc);

		List<Integer> a = new ArrayList<>();
		a.add(s);
		for (int i = 0;; i++) {
			int fn = function(a.get(i));
			if (a.contains(fn)) {
				System.out.println(a.size() + 1);
				break;
			} else {
				a.add(fn);
			}
		}

	}

	private static int function(int n) {

		if (n % 2 == 0) {
			return n / 2;
		} else {
			return n * 3 + 1;
		}
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をlongで返却
	 *
	 * @return
	 */
	public static long getLong(Scanner sc) {

		return Long.parseLong(sc.next());
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をintで返却
	 *
	 * @return
	 */
	public static int getInt(Scanner sc) {

		return Integer.parseInt(sc.next());
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をStringで返却
	 *
	 * @return
	 */
	public static String getString(Scanner sc) {

		return sc.next();
	}

	/**
	 * *汎用メソッド <br>
	 * スキャナーからの入力値をint配列で返却
	 *
	 * @return
	 */
	public static int[] getIntArray(Scanner sc) {
		String line = "";
		// 直前にnext()を実行していると改行コードだけ取ってしまうのでその対策
		while (line.equals("")) {
			line = sc.nextLine();
		}

		String[] strArray = line.split(" ");
		int[] intArray = new int[strArray.length];
		for (int i = 0; i < strArray.length; i++) {
			intArray[i] = Integer.parseInt(strArray[i]);
		}
		return intArray;
	}

}
