#include <bits/stdc++.h>
using vi = std::vector<int>;
using mii = std::unordered_map<int, int>;
int f() {
  int n;
  std::cin >> n;
  vi va(n), vb(n);
  for (auto &a : va) std::cin >> a;
  for (auto &b : vb) std::cin >> b;
  int x = 0;
  for (auto a : va) x = x ^ a;
  mii m;
  m.reserve(n + 1);
  for (auto a : va) m[a]++;
  m[x]++;
  int steps = 0;
  for (int i = 0; i < n; i++) {
    if (vb[i] != va[i]) {
      if (m[vb[i]] == 0) return -1;
      --m[vb[i]];
      ++steps;
    }
  }
  if (steps == 0) return 0;
  if (m[x] == 0) return steps;
  return steps + 1;
}
int main() {
  std::ios_base::sync_with_stdio(false);
  std::cin.tie(nullptr);
  std::cout << f() << std::endl;
}
