#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define dd double
#define ld long double
#define pi 3.14159265359
#define ull unsigned long long
#define yes cout<<"YES\n"
#define no cout<<"NO\n"
#define el "\n"
#define Arwa ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define fix(x) cout<<fixed<<setprecision(x)
ll gcd(ll a,ll b) {return b==0?a:gcd(b,a%b);}
ll lcm(int a,int b) {return a/gcd(a,b)*b;}
bool prime(ll n)
{
if(n==2) return true;
if(n%2==0||n==1) return false;
else { for(ll i=3; i*i<=n; i+=2) {if(n%i==0) return false;}}return true;
}
//here we go again
int main()
{
Arwa
int t=1;
//cin>>t;
while(t--)
{
int n;
cin>>n;
int arr[n],fake1[n],fake2[n],fake3[n],fake4[n],fake5[n],fake6[n],fake7[n],fake8[n],fake9[n],c1=0,c2=0,c3=0,c4=0,c5=0,c6=0,c7=0,c8=0,c9=0;
bool f1=1,f2=1,f3=1,f4=1,f5=1,f6=1,f7=1,f8=1,f9=1;
for(int i=0;i<n;i++)
cin>>arr[i];
for(int i=0;i<n;i++)
{
fake1[i]=arr[i];
fake2[i]=arr[i];
fake3[i]=arr[i];
fake4[i]=arr[i];
fake5[i]=arr[i];
fake6[i]=arr[i];
fake7[i]=arr[i];
fake8[i]=arr[i];
fake9[i]=arr[i];
}
// SAME DIFF
int a=abs(fake1[1]-fake1[0]);
for(int i=2;i<n;i++)
{
if(abs(fake1[i]-fake1[i-1])-a==1)
{
fake1[i]++; c1++;
}
else if(abs(fake1[i]-fake1[i-1])-a==-1)
{
fake1[i]--; c1++;
}
else if(abs(fake1[i]-fake1[i-1])-a==0)
continue;
else
{
f1=0; c1=0; break;
}
}
// Same(both will decrease)
int g=abs(fake6[1]-fake6[0]);
fake6[1]--;fake6[0]--;c6+=2;
for(int i=2;i<n;i++)
{
if(abs(fake6[i]-fake6[i-1])-g==1)
{
fake6[i]++; c6++;
}
else if(abs(fake6[i]-fake6[i-1])-g==-1)
{
fake6[i]--; c6++;
}
else if(abs(fake6[i]-fake6[i-1])-g==0)
continue;
else
{
f6=0; c6=0; break;
}
}
// Same(both will increase)
int h=abs(fake7[1]-fake7[0]);
fake7[1]++;fake7[0]++;c7+=2;
for(int i=2;i<n;i++)
{
if(abs(fake7[i]-fake7[i-1])-h==1)
{
fake7[i]++; c7++;
}
else if(abs(fake7[i]-fake7[i-1])-h==-1)
{
fake7[i]--; c7++;
}
else if(abs(fake7[i]-fake7[i-1])-h==0)
continue;
else
{
f7=0; c7=0; break;
}
}
//min will increase by 1(diff will decrease by 1)
int b=abs(fake2[1]-fake2[0])-1;
if(fake2[1]<=fake2[0])
fake2[1]++; else fake2[0]++;
c2++;
for(int i=2;i<n;i++)
{
if(abs(fake2[i]-fake2[i-1])-b==1)
{
fake2[i]++; c2++;
}
else if(abs(fake2[i]-fake2[i-1])-b==-1)
{
fake2[i]--; c2++;
}
else if(abs(fake2[i]-fake2[i-1])-b==0)
continue;
else
{
f2=0; c2=0; break;
}
}
//max will decrease by 1(diff will decrease by 1)
int s=abs(fake9[1]-fake9[0])-1;
if(fake9[1]<=fake9[0])
fake9[0]--; else fake9[1]--;
c9++;
for(int i=2;i<n;i++)
{
if(abs(fake9[i]-fake9[i-1])-s==1)
{
fake9[i]++; c9++;
}
else if(abs(fake9[i]-fake9[i-1])-s==-1)
{
fake9[i]--; c9++;
}
else if(abs(fake9[i]-fake9[i-1])-s==0)
continue;
else
{
f9=0; c9=0; break;
}
}
//min will increase max will decrease(diff decrease by 2)
int d=abs(fake3[1]-fake3[0])-2;
if(fake3[1]<=fake3[0])
{
fake3[1]++; fake3[0]--;
}
else
{
fake3[0]++; fake3[1]--;
}
c3+=2;
for(int i=2;i<n;i++)
{
if(abs(fake3[i]-fake3[i-1])-d==1)
{
fake3[i]++; c3++;
}
else if(abs(fake3[i]-fake3[i-1])-d==-1)
{
fake3[i]--; c3++;
}
else if(abs(fake3[i]-fake3[i-1])-d==0)
continue;
else
{
f3=0; c3=0; break;
}
}
//min will decrease by 1(diff will increase by1)
int e=abs(fake4[1]-fake4[0])+1;
if(fake4[1]<=fake4[0])
fake4[1]--; else fake4[0]--;
c4++;
for(int i=2;i<n;i++)
{
if(abs(fake4[i]-fake4[i-1])-e==1)
{
fake4[i]++; c4++;
}
else if(abs(fake4[i]-fake4[i-1])-e==-1)
{
fake4[i]--; c4++;
}
else if(abs(fake4[i]-fake4[i-1])-e==0)
continue;
else
{
f4=0; c4=0; break;
}
}
//max will increase by 1(diff will increase by1)
int l=abs(fake8[1]-fake8[0])+1;
if(fake8[1]<=fake8[0])
fake8[0]++; else fake8[1]++;
c8++;
for(int i=2;i<n;i++)
{
if(abs(fake8[i]-fake8[i-1])-l==1)
{
fake8[i]++; c8++;
}
else if(abs(fake8[i]-fake8[i-1])-l==-1)
{
fake8[i]--; c8++;
}
else if(abs(fake8[i]-fake8[i-1])-l==0)
continue;
else
{
f8=0; c8=0; break;
}
}
//min will decrease max will increase(diff increase by 2)
int f=abs(fake5[1]-fake5[0])+2;
if(fake5[1]<=fake5[0])
{
fake5[1]--; fake5[0]++;
}
else
{
fake5[0]--; fake5[1]++;
}
c5+=2;
for(int i=2;i<n;i++)
{
if(abs(fake5[i]-fake5[i-1])-f==1)
{
fake5[i]++; c5++;
}
else if(abs(fake5[i]-fake5[i-1])-f==-1)
{
fake5[i]--; c5++;
}
else if(abs(fake5[i]-fake5[i-1])-f==0)
continue;
else
{
f5=0; c5=0; break;
}
}
//cout<<f1<<' '<<c1<<el<<f2<<' '<<c2<<el<<f3<<' '<<c3<<el<<f4<<' '<<c4<<el<<f5<<' '<<c5<<el<<f6<<' '<<c6<<el<<f7<<' '<<c7<<el<<f8<<' '<<c8<<el<<f9<<' '<<c9<<el;
int min=1000000000;
if(f1)
{ if(min>c1) min=c1; }
if(f2)
{ if(min>c2) min=c2; }
if(f3)
{ if(min>c3) min=c3; }
if(f4)
{ if(min>c4) min=c4; }
if(f5)
{ if(min>c5) min=c5; }
if(f6)
{ if(min>c6) min=c6; }
if(f7)
{ if(min>c7) min=c7; }
if(f8)
{ if(min>c8) min=c8; }
if(f9)
{ if(min>c9) min=c9; }
if(min==1000000000)
cout<<-1<<el;
else cout<<min<<el;
}
return 0;
}