#include <bits/stdc++.h>
using namespace std;
int const mn = 1e5 + 3;
int n, a[mn], b[mn], cnt[mn], par[mn];
map<int, int> re;
int get(int x) { return (par[x] == x) ? x : par[x] = get(par[x]); }
int main() {
  scanf("%d", &n);
  int tmp = 0;
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]), a[n + 1] ^= a[i];
  for (int i = 1; i <= n; i++) scanf("%d", &b[i]), b[n + 1] ^= b[i];
  n++;
  for (int i = 1; i <= n; i++) {
    if (!re[a[i]]) re[a[i]] = ++tmp;
    if (!re[b[i]]) re[b[i]] = ++tmp;
    cnt[re[a[i]]]++;
    cnt[re[b[i]]]--;
  }
  for (int i = 1; i <= tmp; i++)
    if (cnt[i]) {
      printf("-1");
      return 0;
    }
  int ans = 0;
  for (int i = 1; i <= tmp; i++) par[i] = i;
  for (int i = 1; i <= n; i++)
    if (a[i] != b[i]) {
      ans += i != n;
      par[get(re[a[i]])] = get(re[b[i]]);
    } else
      ans -= i != n;
  for (int i = 1; i <= tmp; i++) ans += par[i] == i;
  printf("%d", ans - 1);
  return 0;
}
