n = int(input()) import math import numpy as np import decimal import collections import itertools import sys def find(x): if par[x] < 0: return x else: par[x] = find(par[x]) return par[x] def unite(x, y): p = find(x) q = find(y) if p == q: return None if p > q: p,q = q,p par[p] += par[q] par[q] = p def same(x, y): return find(x) == find(y) def size(x): return -par[find(x)] par = [-1 for i in range(n)] def prime_numbers(x): if x < 2: return [] prime_numbers = [i for i in range(x)] prime_numbers[1] = 0 for prime_number in prime_numbers: if prime_number > math.sqrt(x): break if prime_number == 0: continue for composite_number in range(2 * prime_number, x, prime_number): prime_numbers[composite_number] = 0 return [prime_number for prime_number in prime_numbers if prime_number != 0] def is_prime(x): if x < 2: return False if x == 2 or x == 3 or x == 5: return True if x % 2 == 0 or x % 3 == 0 or x % 5 == 0: return False prime_number = 7 difference = 4 while prime_number <= math.sqrt(x): if x % prime_number == 0: return False prime_number += difference difference = 6 - difference return True mod = 10 ** 9 + 7 def comb(n, r): if n < r:return 0 if n < 0 or r < 0:return 0 return fa[n] * fi[r] % mod * fi[n - r] % mod fa = [1] * (n + 1) fi = [1] * (n + 1) for i in range(1, n + 1): fa[i] = fa[i - 1] * i % mod fi[i] = pow(fa[i], mod - 2, mod) BIT = [0] * (n + 1) def add(i, x): while i <= n: BIT[i] += x i += i & -i def query(i): s = 0 while i > 0: s += BIT[i] i -= i & -i return s a = list(map(int, input().split())) b = list(map(int, input().split())) a.append(0) b.append(0) if a[0] != b[0] or a[-2] != b[-2]: print(-1) else: a2 = [a[i] ^ a[i + 1] for i in range(n)] b2 = [b[i] ^ b[i + 1] for i in range(n)] dic = {i: [] for i in b2} for i in range(n): dic[b2[i]].append(i) ans = 0 for i in range(n - 1, -1, -1): if not a2[i] in dic or dic[a2[i]] == []: print(-1) exit() ans += query(dic[a2[i]][-1] + 1) add(dic[a2[i]][-1] + 1, 1) dic[a2[i]].pop() print(ans)