rt
#include<bits/stdc++.h>
using namespace std;
long long n,a[100001],f[100001];
int main(){
cin>>n;
for(long long i=1;i<=n;i++){
cin>>a[i];
}
long long QAQ=0x3f;
memset(f,QAQ,sizeof(f));
f[1]=0;
for(long long i=2;i<=n;i++){
if(a[i]<=a[i-1]+1)f[i]=f[i-1]+1;
for(long long j=i-1;j>=1;j--){
for(long long k=j-1;k>=1;k--){
if((1<<(j-k))+a[k]>=a[i])f[i]=min(f[i],f[j]+j-k+1);
}
}
}
if(f[n]<=QAQ)cout<<f[n];
else cout<<-1;
return 0;
}