#include<iostream>
#include<string.h>
using namespace std;
#define ll long long
const int MAXN=205;
int a[MAXN],f[MAXN],n;
ll fastpow(ll a,ll b){
ll res=1;
while(b>0){
if(b%2==1){
res*=a;
}
a*=a;
b/=2;
}
return res;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
memset(f,0x3f3f3f3f,sizeof(f));
f[1]=0;
for(int i=2;i<=n;i++){
if(a[i]==a[i-1]+1)f[i]=f[i-1]+1;
for(int j=i-1;j>0;j--){
for(int k=j-1;k>0;k--){
if((fastpow(2,(j-k))+a[k]>=a[i]))f[i]=min(f[i],f[j]+(j-k)+1);
}
}
}
if(f[n]>=0x3f3f3f3f)cout<<-1<<"\n";
else cout<<f[n]<<"\n";
}