#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef unsigned long long ull;
 
using tpl = tuple<int, int, int>;
typedef pair<int,int> pii;

void fastStream(){cin.tie(0);std::ios_base::sync_with_stdio(0);}

ll N;
ll A1[200010];
ll A2[200010];

ll dp_pos[200010][16];
ll dp_neg[200010][16];

void solve(ll A[200010], ll dp_pos[200010][16]){
    for(ll pos = N - 1; pos >= 0; pos--){
        for(ll ope_cnt = 0; ope_cnt <= 15; ope_cnt++){ 
            ll res = 1LL << 62;
            if(pos == N - 1) {
                res = 0;
            }
            else{
                // 現在のところの値に対して 4 ^ ope_cnt したものと、次の要素の値を比較し、次の値が何回計算する必要があるか調べる
                ll c_val = A[pos] * (1LL << (ope_cnt * 2));
                if(c_val <= A[pos + 1]){
                    // 操作の必要なし
                    res = dp_pos[pos + 1][0];
                }
                else{
                    // 何回操作したら超えるか調べる
                    // 15を超えた分は、残りの数字をすべて4でかける操作で代用できるので、その分を加算しておくことで代用する
                    // c_val <= A[pos + 1] * (4 ^ n_cnt)となる最小のn_cntを計算する
                    ll n_cnt = 0;
                    ll cmp = (A[pos + 1] + c_val - 1) / A[pos + 1];
                    for(; ; n_cnt++) if(cmp <= 1LL << (n_cnt * 2)) break;
                    ll diff = max(n_cnt - 15, 0LL);
                    res = (N - 1 - pos) * 2 * diff + min(n_cnt, 15LL) * 2 + dp_pos[pos + 1][min(n_cnt, 15LL)];
                }

            }
            dp_pos[pos][ope_cnt] = res;
        }
    }
}

int main(){
    cin >> N;
    for(ll i = 0; i < N; i++){
        cin >> A1[i];
        A2[N - 1 - i] = A1[i];
    }
    
    solve(A1, dp_pos);
    solve(A2, dp_neg);
    
    ll ans = min(dp_pos[0][0], dp_neg[0][0] + N);
    for(ll i = 1; i < N; i++){
        // iから正になる場合
        ans = min(ans, dp_neg[N-i-1][0] + dp_pos[i][0] + i);
    }
    cout<< ans << endl;

    return 0;
}
