#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int n;
int a[N];
int b[N];
int sum1[N];
int xora;
int xorb;
map<int, int> mp1;
int tot;
int main() {
  scanf("%d", &n);
  xora = 0;
  for (int i = 1; i <= n; ++i) {
    scanf("%d", a + i);
    xora ^= a[i];
  }
  xorb = 0;
  for (int i = 1; i <= n; ++i) {
    scanf("%d", b + i);
    xorb ^= b[i];
  }
  sum1[0] = 0;
  for (int i = 1; i <= n; ++i) {
    sum1[i] = sum1[i - 1];
    if (a[i] != b[i]) {
      ++sum1[i];
    }
  }
  int ans = 0;
  for (int i = 1; i <= n; ++i) {
    if (a[i] != b[i]) {
      ans = N;
    }
  }
  if (ans == 0) {
    printf("%d\n", ans);
    return 0;
  }
  for (int i = 1; i <= n; ++i) {
    ++mp1[a[i]];
  }
  ++mp1[xora];
  for (int i = 1; i <= n; ++i) {
    --mp1[b[i]];
  }
  for (auto it : mp1) {
    if (it.second < 0) {
      ans = -1;
    }
  }
  if (ans == -1) {
    printf("%d\n", ans);
    return 0;
  }
  ans = sum1[n] + 1;
  if (sum1[n] <= 2) {
    for (int i = 1; i <= n; ++i) {
      if (a[i] != b[i]) {
        for (int j = 1; j <= n; ++j) {
          if (b[j] == xora && a[j] == b[i]) {
            ans = sum1[n];
          }
        }
      }
    }
  }
  printf("%d\n", ans);
}
