#include <bits/stdc++.h>
using namespace std;
int n, a[100005], b[100005], fa[100005], siz[100005], x, ans, cnt;
map<int, int> mp, val;
int find(int x) {
  if (fa[x] == x) return x;
  return fa[x] = find(fa[x]);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) fa[i] = i, siz[i] = 1;
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    x ^= a[i];
    mp[a[i]]++;
    if (!val[a[i]]) val[a[i]] = ++cnt;
  }
  mp[x]++;
  for (int i = 1; i <= n; i++) scanf("%d", &b[i]);
  for (int i = 1; i <= n; i++) {
    if (!mp[b[i]]) {
      printf("-1\n");
      return 0;
    }
    mp[b[i]]--;
    if (!val[b[i]]) val[b[i]] = ++cnt;
    if (b[i] != a[i]) {
      int r1 = find(val[a[i]]), r2 = find(val[b[i]]);
      if (r1 != r2) fa[r2] = r1, siz[r1] += siz[r2];
      ans++;
    }
  }
  for (int i = 1; i <= n; i++)
    if (find(i) == i && siz[i] > 1) ans++;
  printf("%d\n", max(0, ans - 1));
}
