#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 9;
int a[111], len;
bool used[maxn];
set<int> s;
inline int gcd(int a, int b) {
  if (b) {
    return gcd(b, a % b);
  }
  return a;
}
inline long long lcm(int a, int b) { return a / gcd(a, b) * b; }
inline void dfs(int v) {
  used[v] = 1;
  len++;
  if (!used[a[v]]) {
    dfs(a[v]);
  }
}
int main() {
  int n, ans = 1;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
  }
  for (int i = 1; i <= n; i++) {
    s.insert(a[i]);
  }
  if (s.size() < n) {
    cout << "-1";
  } else {
    for (int i = 1; i <= n; i++) {
      if (!used[i]) {
        len = 0;
        dfs(i);
      }
      if (!(len % 2)) {
        len /= 2;
      }
      ans = lcm(ans, len);
    }
    cout << ans;
  }
}
