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: #!/usr/bin/env python
  import os
  import sys
  from io import BytesIO, IOBase
  
  
  def f(n: int) -> int:
      if n % 2 == 0:
          return n // 2
      return 3 * n + 1
  
  
  def main() -> None:
      s = int(input())
  
      seen = set()
      seen.add(s)
      a = [s]
  
      m = 2
      while True:
          latest = f(a[-1])
          if latest in seen:
              print(m)
              exit(0)
          m += 1
          a.append(latest)
          seen.add(latest)
  
  
  # region fastio
  
  BUFSIZE = 8192
  
  
  class FastIO(IOBase):
      newlines = 0
  
      def __init__(self, file):
          self._fd = file.fileno()
          self.buffer = BytesIO()
          self.writable = "x" in file.mode or "r" not in file.mode
          self.write = self.buffer.write if self.writable else None
  
      def read(self):
          while True:
              b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
              if not b:
                  break
              ptr = self.buffer.tell()
              self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
          self.newlines = 0
          return self.buffer.read()
  
      def readline(self, **kwargs):
          while self.newlines == 0:
              b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
              self.newlines = b.count(b"\n") + (not b)
              ptr = self.buffer.tell()
              self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
          self.newlines -= 1
          return self.buffer.readline()
  
      def flush(self):
          if self.writable:
              os.write(self._fd, self.buffer.getvalue())
              self.buffer.truncate(0), self.buffer.seek(0)
  
  
  class IOWrapper(IOBase):
      def __init__(self, file):
          self.buffer = FastIO(file)
          self.flush = self.buffer.flush
          self.writable = self.buffer.writable
          self.write = lambda s: self.buffer.write(s.encode("ascii"))
          self.read = lambda: self.buffer.read().decode("ascii")
          self.readline = lambda: self.buffer.readline().decode("ascii")
  
  
  sys.stdin, sys.stdout = IOWrapper(sys.stdin), IOWrapper(sys.stdout)
  input = lambda: sys.stdin.readline().rstrip("\r\n")
  
  # endregion
  
  if __name__ == "__main__":
      main()
  
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"}]