#include <bits/stdc++.h>
using namespace std;
int n, a[100009], b[100009], c1, c2, v, ind1[100009], ind2[100009];
vector<int> D1, D2, x[100009];
bool col[100009], used[100009];
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) cin >> a[i], c1 ^= a[i], D1.push_back(a[i]);
  D1.push_back(c1);
  for (int i = 0; i < n; i++) cin >> b[i], c2 ^= b[i], D2.push_back(b[i]);
  D2.push_back(c2);
  sort(D1.begin(), D1.end());
  sort(D2.begin(), D2.end());
  if (D1 != D2) {
    cout << "-1" << endl;
    return 0;
  }
  for (int i = 0; i < n; i++) {
    a[i] = lower_bound(D1.begin(), D1.end(), a[i]) - D1.begin();
    ind1[a[i]] = i;
    b[i] = lower_bound(D2.begin(), D2.end(), b[i]) - D2.begin();
    ind2[b[i]] = i;
  }
  c1 = lower_bound(D1.begin(), D1.end(), c1) - D1.begin();
  ind1[c1] = n;
  c2 = lower_bound(D2.begin(), D2.end(), c2) - D2.begin();
  ind2[c2] = n;
  for (int i = 0; i < n; i++) v += (int)(a[i] != b[i]);
  bool F = true;
  for (int i = 0; i < n; i++) {
    if (a[i] == c1) F = false;
  }
  if (c1 == c2 && F == true)
    cout << v + 2 << endl;
  else {
    a[n] = c1;
    for (int i = 0; i <= n; i++) {
      x[i].push_back(ind2[a[i]]);
      col[ind2[a[i]]] = true;
    }
    int cx = 0;
    for (int i = 0; i < n; i++) {
      if (col[i] == true) cx = i;
    }
    used[cx] = true;
    for (int i = 0; i < 1000000; i++) {
      cx = x[cx][0];
      used[cx] = true;
    }
    bool OK = false;
    for (int i = 0; i < n; i++) {
      if (col[i] == true && used[i] == false) OK = true;
    }
    if (OK == false)
      cout << v << endl;
    else
      cout << v + 1 << endl;
  }
  return 0;
}
