#include #include #include #include #include using namespace std; const int inf = 1012345678; int main() { int N; cin >> N; vector A(N); for (int i = 0; i < N; ++i) { cin >> A[i]; --A[i]; } vector > G(N); for (int i = 0; i < N; ++i) { G[A[i]].push_back(i); } int ans = 0; for (int i = 0; i < N; ++i) { if (G[i].empty()) continue; int l = inf, r = -inf; for (int j : G[i]) { l = min(l, j); r = max(r, j); } if (r - l + 1 != G[i].size()) { sort(G[i].begin(), G[i].end()); bool f = true; for (int j = 0; j < G[i].size(); ++j) { if (G[i][j] != j && G[i][j] != N - (G[i].size() - j)) { f = false; break; } } if (f) ++ans; else { ans = -1; break; } } } cout << ans << endl; return 0; }