#include <cstdio>
#include <algorithm>
#define rep(i, a, b) for (int i = a; i <= b; ++ i) 
const int N = 2e5 + 5 ;
using namespace std ;

int n, ans = 0, a[N], b[N], d[N], fa[N] ;

int find(int x) {
	int l = 1, r = d[0] ; 
	for ( ; l <= r ; ) {
		int mid = (l + r) / 2 ;
		if (d[mid] == x) return mid ;
		if (x < d[mid]) r = mid - 1 ; else l = mid + 1 ;
	}
	return 0 ;
}

int getfa(int x) {
	return (fa[x] == x ? x : fa[x] = getfa(fa[x])) ;
}

int main() {
	scanf("%d", &n) ;
	rep(i, 1, n) scanf("%d", &a[i]), a[0] ^= a[i] ;
	rep(i, 1, n) scanf("%d", &b[i]), b[0] ^= b[i] ;
	rep(i, 1, n) if (a[i] != b[i]) d[++ d[0]] = a[i], d[++ d[0]] = b[i] ;
	d[++ d[0]] = a[0], d[++ d[0]] = b[0] ;
	sort(d + 1, d + d[0] + 1) ;
	d[0] = unique(d + 1, d + d[0] + 1) - (d + 1) ;
	rep(i, 1, d[0]) fa[i] = i ;
	rep(i, 1, n) if (a[i] != b[i]) ++ ans, fa[getfa(find(a[i]))] = getfa(find(b[i])) ;
	sort(a, a + n + 1) ;
	sort(b, b + n + 1) ;
	rep(i, 0, n) if (a[i] != b[i]) {
		puts("-1") ;
		return 0 ;
	}
	rep(i, 1, d[0]) ans += getfa(i) == i ;
	printf("%d\n", ans - 1) ;
	return 0 ; 
}