#include <bits/stdc++.h>
using namespace std;
int n, x[101], p = 0, k = 0, y[101], z[101], q[101];
void f(int a);
int iuub(int a, int b);
int main() {
  int i, j;
  scanf("%d", &n);
  for (i = 1; i <= n; i++) scanf("%d", &x[i]);
  for (i = 1; i <= n; i++) {
    k = 0;
    if (!y[i]) {
      f(i);
      if (p == -1) {
        printf("-1");
        return 0;
      }
    }
  }
  for (i = 1; i <= p; i++)
    if (z[i] % 2 == 0) z[i] = z[i] / 2;
  if (p == 1) {
    printf("%d", z[1]);
    return 0;
  }
  k = iuub(z[1], z[2]);
  i = (z[1] * z[2]) / k;
  for (j = 3; j <= p; j++) {
    i = (i * z[j]) / (iuub(i, z[j]));
  }
  printf("%d", i);
  return 0;
}
void f(int a) {
  int i, j;
  y[a] = 1;
  q[++k] = a;
  if (!y[x[a]])
    f(x[a]);
  else {
    if (x[a] == q[1])
      z[++p] = k;
    else
      p = -1;
  }
  return;
}
int iuub(int a, int b) {
  if (a == 0) return b;
  if (b == 0) return a;
  if (a <= b) return iuub(b % a, a);
  if (a > b) return iuub(a % b, b);
}
