import java.util.*;
import static java.lang.Math.*;

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

		// 入力
		int n = sc.nextInt();
		int values[] = new int[n];

		for(int i = 0; i < n; i++){
			values[i] = sc.nextInt(); // 入力値取得
		}

		// 操作が可能な限り実行する。
		int minNum = NumberOfDevision(values);

		// 出力
		System.out.println(minNum);
	}

	// 偶数かどうかを判定
	static boolean isEven(int n){
		if(n%2 == 0){
			return true;
		}else{
			return false;
		}
	}

	// 2で割り切れる回数を取得
	static int NumberOfDevision(int[] values){
		for(int i = 0; i < values.length; i++){
			if(isEven(values[i])){
				values[i] = values[i]/2;
			}else{
				return 0;
			}
		}
		return 1 + NumberOfDevision(values);
	}
}

 import java.util.*; util.* java import static java.lang.Math.*; import static java.lang.Math.*; import static java.lang.Math.*; public class Main {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);

		// 入力
		int n = sc.nextInt();
		int values[] = new int[n];

		for(int i = 0; i < n; i++){
			values[i] = sc.nextInt(); // 入力値取得
		}

		// 操作が可能な限り実行する。
		int minNum = NumberOfDevision(values);

		// 出力
		System.out.println(minNum);
	}

	// 偶数かどうかを判定
	static boolean isEven(int n){
		if(n%2 == 0){
			return true;
		}else{
			return false;
		}
	}

	// 2で割り切れる回数を取得
	static int NumberOfDevision(int[] values){
		for(int i = 0; i < values.length; i++){
			if(isEven(values[i])){
				values[i] = values[i]/2;
			}else{
				return 0;
			}
		}
		return 1 + NumberOfDevision(values);
	}
} Main public static void main(String[] args){
		Scanner sc = new Scanner(System.in);

		// 入力
		int n = sc.nextInt();
		int values[] = new int[n];

		for(int i = 0; i < n; i++){
			values[i] = sc.nextInt(); // 入力値取得
		}

		// 操作が可能な限り実行する。
		int minNum = NumberOfDevision(values);

		// 出力
		System.out.println(minNum);
	} main {
		Scanner sc = new Scanner(System.in);

		// 入力
		int n = sc.nextInt();
		int values[] = new int[n];

		for(int i = 0; i < n; i++){
			values[i] = sc.nextInt(); // 入力値取得
		}

		// 操作が可能な限り実行する。
		int minNum = NumberOfDevision(values);

		// 出力
		System.out.println(minNum);
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int n = sc.nextInt(); n sc.nextInt() sc.nextInt sc int values[] = new int[n]; values new int[n] n for(int i = 0; i < n; i++){
			values[i] = sc.nextInt(); // 入力値取得
		} int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
			values[i] = sc.nextInt(); // 入力値取得
		} {
			values[i] = sc.nextInt(); // 入力値取得
		} values[i] = sc.nextInt() values[i] values i sc.nextInt() sc.nextInt sc int minNum = NumberOfDevision(values); minNum NumberOfDevision(values) NumberOfDevision values System.out.println(minNum) System.out.println System.out System System.out minNum String[] args args // 偶数かどうかを判定
	static boolean isEven(int n){
		if(n%2 == 0){
			return true;
		}else{
			return false;
		}
	} isEven {
		if(n%2 == 0){
			return true;
		}else{
			return false;
		}
	} if(n%2 == 0){
			return true;
		}else{
			return false;
		} n%2 == 0 n%2 n 2 0 {
			return true;
		} return true; true {
			return false;
		} return false; false int n n // 2で割り切れる回数を取得
	static int NumberOfDevision(int[] values){
		for(int i = 0; i < values.length; i++){
			if(isEven(values[i])){
				values[i] = values[i]/2;
			}else{
				return 0;
			}
		}
		return 1 + NumberOfDevision(values);
	} NumberOfDevision {
		for(int i = 0; i < values.length; i++){
			if(isEven(values[i])){
				values[i] = values[i]/2;
			}else{
				return 0;
			}
		}
		return 1 + NumberOfDevision(values);
	} for(int i = 0; i < values.length; i++){
			if(isEven(values[i])){
				values[i] = values[i]/2;
			}else{
				return 0;
			}
		} int i = 0; int i = 0; i 0 i < values.length i values.length values values.length i++ i++ i {
			if(isEven(values[i])){
				values[i] = values[i]/2;
			}else{
				return 0;
			}
		} {
			if(isEven(values[i])){
				values[i] = values[i]/2;
			}else{
				return 0;
			}
		} if(isEven(values[i])){
				values[i] = values[i]/2;
			}else{
				return 0;
			} isEven(values[i]) isEven values[i] values i {
				values[i] = values[i]/2;
			} values[i] = values[i]/2 values[i] values i values[i]/2 values[i] values i 2 {
				return 0;
			} return 0; 0 return 1 + NumberOfDevision(values); 1 + NumberOfDevision(values) 1 NumberOfDevision(values) NumberOfDevision values int[] values values public class Main {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);

		// 入力
		int n = sc.nextInt();
		int values[] = new int[n];

		for(int i = 0; i < n; i++){
			values[i] = sc.nextInt(); // 入力値取得
		}

		// 操作が可能な限り実行する。
		int minNum = NumberOfDevision(values);

		// 出力
		System.out.println(minNum);
	}

	// 偶数かどうかを判定
	static boolean isEven(int n){
		if(n%2 == 0){
			return true;
		}else{
			return false;
		}
	}

	// 2で割り切れる回数を取得
	static int NumberOfDevision(int[] values){
		for(int i = 0; i < values.length; i++){
			if(isEven(values[i])){
				values[i] = values[i]/2;
			}else{
				return 0;
			}
		}
		return 1 + NumberOfDevision(values);
	}
} public class Main {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);

		// 入力
		int n = sc.nextInt();
		int values[] = new int[n];

		for(int i = 0; i < n; i++){
			values[i] = sc.nextInt(); // 入力値取得
		}

		// 操作が可能な限り実行する。
		int minNum = NumberOfDevision(values);

		// 出力
		System.out.println(minNum);
	}

	// 偶数かどうかを判定
	static boolean isEven(int n){
		if(n%2 == 0){
			return true;
		}else{
			return false;
		}
	}

	// 2で割り切れる回数を取得
	static int NumberOfDevision(int[] values){
		for(int i = 0; i < values.length; i++){
			if(isEven(values[i])){
				values[i] = values[i]/2;
			}else{
				return 0;
			}
		}
		return 1 + NumberOfDevision(values);
	}
} Main
import java.util.*;
import static java.lang.Math.*;

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

		// 入力
		int n = sc.nextInt();
		int values[] = new int[n];

		for(int i = 0; i < n; i++){
			values[i] = sc.nextInt(); // 入力値取得
		}

		// 操作が可能な限り実行する。
		int minNum = NumberOfDevision(values);

		// 出力
		System.out.println(minNum);
	}

	// 偶数かどうかを判定
	static boolean isEven(int n){
		if(n%2 == 0){
			return true;
		}else{
			return false;
		}
	}

	// 2で割り切れる回数を取得
	static int NumberOfDevision(int[] values){
		for(int i = 0; i < values.length; i++){
			if(isEven(values[i])){
				values[i] = values[i]/2;
			}else{
				return 0;
			}
		}
		return 1 + NumberOfDevision(values);
	}
}


