output_description: Print the minimum integer m that satisfies the condition.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      s
attempt: import math
  from collections import deque
  from collections import defaultdict
  
  
  # 自作関数群
  def readInt():
      return int(input())
  
  
  def readInts():
      return list(map(int, input().split()))
  
  
  def readChar():
      return input()
  
  
  def readChars():
      return input().split()
  
  
  def factorization(n):
      res = []
      if n % 2 == 0:
          res.append(2)
      for i in range(3, math.floor(n // 2) + 1, 2):
          if n % i == 0:
              c = 0
              for j in res:
                  if i % j == 0:
                      c = 1
              if c == 0:
                  res.append(i)
      return res
  
  
  def fact2(n):
      p = factorization(n)
      res = []
      for i in p:
          c = 0
          z = n
          while 1:
              if z % i == 0:
                  c += 1
                  z /= i
              else:
                  break
          res.append([i, c])
      return res
  
  
  def fact(n):  # 階乗
      ans = 1
      m = n
      for _i in range(n - 1):
          ans *= m
          m -= 1
      return ans
  
  
  def comb(n, r):  # コンビネーション
      if n < r:
          return 0
      l = min(r, n - r)
      m = n
      u = 1
      for _i in range(l):
          u *= m
          m -= 1
      return u // fact(l)
  
  
  def combmod(n, r, mod):
      return (fact(n) / fact(n - r) * pow(fact(r), mod - 2, mod)) % mod
  
  
  def printQueue(q):
      r = copyQueue(q)
      ans = [0] * r.qsize()
      for i in range(r.qsize() - 1, -1, -1):
          ans[i] = r.get()
      print(ans)
  
  
  class UnionFind:
      def __init__(self, n):
          self.n = n
          self.parents = [-1] * n
  
      def find(self, x):  # root
          if self.parents[x] < 0:
              return x
          else:
              self.parents[x] = self.find(self.parents[x])
              return self.parents[x]
  
      def union(self, x, y):
          x = self.find(x)
          y = self.find(y)
  
          if x == y:
              return
  
          if self.parents[x] > self.parents[y]:
              x, y = y, x
  
          self.parents[x] += self.parents[y]
          self.parents[y] = x
  
      def size(self, x):
          return -1 * self.parents[self.find(x)]
  
      def same(self, x, y):
          return self.find(x) == self.find(y)
  
      def members(self, x):  # much time
          root = self.find(x)
          return [i for i in range(self.n) if self.find(i) == root]
  
      def roots(self):
          return [i for i, x in enumerate(self.parents) if x < 0]
  
      def group_count(self):
          return len(self.roots())
  
      def all_group_members(self):
          return {r: self.members(r) for r in self.roots()}  # 1~n
  
  
  def bitArr(n):  # ビット全探索
      x = 1
      zero = "0" * n
      ans = []
      ans.append([0] * n)
      for i in range(2**n - 1):
          ans.append(list(map(lambda x: int(x), list((zero + bin(x)[2:])[-1 * n :]))))
          x += 1
      return ans
  
  
  def arrsSum(a1, a2):
      for i in range(len(a1)):
          a1[i] += a2[i]
      return a1
  
  
  def maxValue(a, b, v):
      v2 = v
      for i in range(v2, -1, -1):
          for j in range(v2 // a + 1):  # j:aの個数
              k = i - a * j
              if k % b == 0:
                  return i
      return -1
  
  
  def copyQueue(q):
      nq = queue.Queue()
      n = q.qsize()
      for i in range(n):
          x = q.get()
          q.put(x)
          nq.put(x)
      return nq
  
  
  s = readInt()
  
  ex = [s]
  
  while 1:
      if ex[-1] % 2:
          ex.append(3 * ex[-1] + 1)
      else:
          ex.append(ex[-1] // 2)
      if ex.count(ex[-1]) == 2:
          break
  
  print(len(ex))
  
problem_description: Statement
  
  A sequence a=\\{a_1,a_2,a_3,......\\} is determined as follows:
  
    * The first term s is given as input.
  
    * Let f(n) be the following function: f(n) = n/2 if n is even, and f(n) = 3n+1 if n is odd.
  
    * a_i = s when i = 1, and a_i = f(a_{i-1}) when i > 1.
  
  Find the minimum integer m that satisfies the following condition:
  
    * There exists an integer n such that a_m = a_n (m > n).
samples: [{"input": "8", "output": "5\n    \n\na=\\\\{8,4,2,1,4,2,1,4,2,1,......\\\\}. As a_5=a_2, the answer is 5.\n\n* * *"}, {"input": "7", "output": "18\n    \n\na=\\\\{7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1,4,2,1,......\\\\}.\n\n* * *"}, {"input": "54", "output": "114"}]