#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
using namespace std;
const int MAX = 100100;
int n,data;
int gt[MAX],sum[MAX];
/**
分析
两个数组 gt[t]把ary中的数转化为t所需要的最小操作数 sum[t] 能到达t的数个数
要注意 奇数/2*2的情况
**/
void opt(int data)
{
int w = data,cnt = 0;
while(w)//处理上述奇数的情况
{
sum[w] ++;
gt[w] += cnt;
if(w%2==1 && w!=1)
{
int k = w/2*2;
int ct = cnt+2;
while(k < MAX)
{
sum[k] ++;
gt[k] += ct;
k *= 2;
ct ++;
}
}
w /= 2;
cnt ++;
}
w = data*2,cnt = 1;
while(w < MAX)
{
sum[w] ++;
gt[w] += cnt;
w *= 2;
cnt ++;
}
}
int main()
{
while(~scanf("%d",&n))
{
memset(gt,0,sizeof(gt));
memset(sum,0,sizeof(sum));
for(int i = 0;i < n;i ++)
{
scanf("%d",&data);
opt(data);
}
int Min = 1 << 30;
for(int i = 0;i < MAX;i ++)
{
if(sum[i] == n)
Min = min(Min,gt[i]);
}
cout<<Min<<endl;
}
return 0;
}