#include <bits/stdc++.h>
using namespace std;
const int mx1 = 20;
const int mx2 = 405;
const int mx3 = 2005;
const int mx4 = 30005;
const int mx5 = 100005;
const int mx6 = 1000005;
int _toggle(int N, int pos) { return N = N ^ (1 << pos); }
int _set(int N, int pos) { return N = N | (1 << pos); }
int _reset(int N, int pos) { return N = N & ~(1 << pos); }
bool _check(int N, int pos) { return (bool)(N & (1 << pos)); }
bool _upper(char a) { return a >= 'A' && a <= 'Z'; }
bool _lower(char a) { return a >= 'a' && a <= 'z'; }
bool _digit(char a) { return a >= '0' && a <= '9'; }
int dx[] = {1, -1, 0, 0, -1, -1, 1, 1};
int dy[] = {0, 0, 1, -1, -1, 1, -1, 1};
const int inf = 1e9 + 7;
int n, a[mx5];
int fnd(int x, int y) {
  int cnt = (x != 0) + (y != 0);
  int A = a[1] + x, B = a[2] + y, d = B - A, pre = B;
  for (int i = 3; i <= n; i++) {
    bool f = 0;
    for (int j = -1; j < 2; j++) {
      int now = a[i] + j;
      if (now - pre == d) {
        f = 1;
        pre = now;
        cnt += (j != 0);
        break;
      }
    }
    if (!f) {
      return inf;
    }
  }
  return cnt;
}
void solve() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
  }
  if (n < 3) {
    cout << 0 << '\n';
    return;
  }
  int ans = inf;
  for (int i = -1; i < 2; i++) {
    for (int j = -1; j < 2; j++) {
      ans = min(ans, fnd(i, j));
    }
  }
  if (ans == inf) {
    cout << -1 << '\n';
  } else {
    cout << ans << '\n';
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int tc = 1;
  while (tc--) {
    solve();
  }
}
