output_description: Print the maximum possible number of operations that Snuke can perform.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      A_1 A_2 ... A_N
attempt: # -*- coding: utf-8 -*-
  
  
  # 整数値入力 1文字の入力
  def input_one_number():
      return int(input())
  
  
  # 整数値龍力　複数の入力
  def input_multiple_number():
      return map(int, input().split())
  
  
  # 整数値龍力　複数の入力(配列)
  def input_multiple_number_as_list():
      return list(map(int, input().split()))
  
  
  # 2次元配列入力
  def input_map():
      return [list(map(int, list(input()))) for i in range(h)]
  
  
  # リスト出力
  def print_list(list):
      print(*list)
      return
  
  
  # 2次元配列出力
  def print_map(maplist):
      for i in maplist:
          print(*i, sep="")
      return
  
  
  # 素数生成
  def generate_primenums():
      n = 100
      primes = set(range(2, n + 1))
      for i in range(2, int(n**0.5 + 1)):
          primes.difference_update(range(i * 2, n + 1, i))
      primes = list(primes)
      return primes
  
  
  def memo():
      a = [0] * 5
      b = a  # 良くない配列のコピー
      b2 = a[:]  # 1次元のときはコピーはこれで良い
      a[1] = 3
      print("b:{}, b2:{}".format(b, b2))  # b:[0, 3, 0, 0, 0], b2:[0, 0, 0, 0, 0]
  
      import copy
  
      a = [[0] * 3 for i in range(5)]  # 2次元配列はこう準備、[[0]*3]*5だとだめ
      b = copy.deepcopy(a)  # 2次元配列はこうコピーする
  
      # 内包表記奇数のみ
      odd = [i for i in range(100) if i % 2 == 1]  # [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
  
      # 二部探索
      import bisect
  
      a = [1, 2, 3, 5, 6, 7, 8, 9]
      b = bisect.bisect_left(a, 8)
  
      # combinations、組み合わせ、順列
      from itertools import (
          permutations,
          combinations,
          combinations_with_replacement,
          product,
      )
  
      a = ["a", "b", "C"]
      print(list(permutations(a)))
      print(list(combinations(a, 2)))
      print(list(combinations_with_replacement(a, 3)))
  
  
  # 階乗
  def kaijo(n):
      import math
  
      return math.factorial(n)
  
  
  # 選び方（コンビネーション nCr）
  def num_combination(n, r):
      import math
  
      return math.factorial(n) // math.factorial(n - r)
  
  
  # 最大公約数、最小公倍数
  def calc_gcd_lcm(a, b):
      import fractions
  
      GCD = fractions.gcd(a, b)
      lcm = a * b // gcd
      return gcd, lcm
  
  
  # 複数の最大公約数
  def calc_gcd_list(l):
      import numpy as np
  
      return np.gcd.reduce(l)
  
  
  N = input_one_number()
  lst_A = input_multiple_number_as_list()
  
  min = 1000000000
  
  for i in range(N):
      cnt = 0
      a = lst_A[i]
      while a % 2 == 0:
          cnt += 1
          a //= 2
      if min > cnt:
          min = cnt
  print(min)
  
problem_description: Statement
  
  There are N positive integers written on a blackboard: A_1, ..., A_N.
  
  Snuke can perform the following operation when all integers on the blackboard
  are even:
  
    * Replace each integer X on the blackboard by X divided by 2.
  
  Find the maximum possible number of operations that Snuke can perform.
samples: [{"input": "3\n    8 12 40", "output": "2\n    \n\nInitially, [8, 12, 40] are written on the blackboard. Since all those integers\nare even, Snuke can perform the operation.\n\nAfter the operation is performed once, [4, 6, 20] are written on the\nblackboard. Since all those integers are again even, he can perform the\noperation.\n\nAfter the operation is performed twice, [2, 3, 10] are written on the\nblackboard. Now, there is an odd number 3 on the blackboard, so he cannot\nperform the operation any more.\n\nThus, Snuke can perform the operation at most twice.\n\n* * *"}, {"input": "4\n    5 6 8 10", "output": "0\n    \n\nSince there is an odd number 5 on the blackboard already in the beginning,\nSnuke cannot perform the operation at all.\n\n* * *"}, {"input": "6\n    382253568 723152896 37802240 379425024 404894720 471526144", "output": "8"}]