###d题 思路看代码处

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include<stack>
#include<cmath>
#include <unordered_set>
#include <unordered_map>
#include<set>
#include <map>


using namespace std;

typedef long long LL;
typedef pair<int,int>PII;

#define x first
#define y second
#define ls u<<1
#define rs u<<1|1

int const mod1=998244353;   
int const mod2=1e9+7;
int const N=2e5+7;
int const INF=0x3f3f3f3f;

int T;
int n,m;
int a[N];


/*
思路:
1.首先乘20次2,一定用2^20次方这个因子
2.试着加20次,看有没有更小的可能,例如11111 +1后 100000,
此时乘2就更快到达

*/

void solve(){
    scanf("%d", &n);
    
    int p=1<<20;
    if(n%p==0){
        puts("0");
        return;
    }
    
    n%=p;
    int ans=20;
    for(int i=0;i<=20;i++){ //累加20次
        int temp=n;
        int cnt=0;
        while(temp%2==0)    cnt++,temp/=2;  //统计01后面串有几个0
        ans=min(ans,i+20-cnt);  //20-cnt就是有左移的次数
        n++;
    }
    
    printf("%d\n",ans);
} 

void init(){
    
}

int main()
{
    //std::ios::sync_with_stdio(false);   cin.tie(0); cout.tie(0);
    T=1;
    //cin>>T;
    scanf("%d",&T);
    
    init();
    
    while(T--){
        solve();
    }
	
	return 0;
}