#include <bits/stdc++.h>
using namespace std;
const int INF = 1000000000;
const int dir_4[4][2] = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}};
const int dir_8[8][2] = {{1, 0},  {1, 1},   {0, 1},  {-1, 1},
                         {-1, 0}, {-1, -1}, {0, -1}, {1, -1}};
int main() {
  static int n;
  static int f[100010];
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &f[i]);
  static int k = 1;
  static int g[100010], h[100010];
  for (int i = 1; i <= n; i++) {
    if (f[f[i]] != f[i]) {
      puts("-1");
      return 0;
    }
    if (f[i] == i) {
      g[i] = k;
      h[k] = i;
      k++;
    }
  }
  for (int i = 1; i <= n; i++) {
    g[i] = g[f[i]];
  }
  printf("%d\n", k - 1);
  for (int i = 1; i <= n; i++) {
    printf("%d%c", g[i], (i == n) ? '\n' : ' ');
  }
  for (int i = 1; i <= k - 1; i++) {
    printf("%d%c", h[i], (i == k - 1) ? '\n' : ' ');
  }
}
