#include <bits/stdc++.h>
using namespace std;
int node[109];
int dis[109];
int book[109];
int gcd(int i, int j) {
  if (j == 0) return i;
  return gcd(j, i % j);
}
void pan(int n) {
  int sum = 1;
  int t = node[n];
  while (t != n) {
    if (book[t]) return;
    book[t] = 1;
    t = node[t];
    sum++;
  }
  if (sum == 2) sum--;
  if (sum % 2 == 0) sum = sum / 2;
  dis[n] = sum;
}
int main() {
  int i, j;
  int n;
  scanf("%d", &n);
  for (i = 1; i < n + 1; i++) scanf("%d", &node[i]);
  memset(dis, 0, sizeof dis);
  for (i = 1; i < n + 1; i++) {
    memset(book, 0, sizeof book);
    pan(i);
  }
  for (i = 1; i < n + 1; i++)
    if (!dis[i]) {
      printf("-1\n");
      return 0;
    }
  int mini = 1;
  for (i = 1; i < n + 1; i++) {
    int t = dis[i] * mini / gcd(dis[i], mini);
    mini = max(mini, t);
  }
  printf("%d\n", mini);
  return 0;
}
