#include<bits/stdc++.h>

using namespace std;

#define N 120000

int n,ans,fl,a[N],b[N];
map<int,int> fa,cnt,vis;

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

int main(){
	scanf("%d",&n);
	for (int i=1;i<=n;++i){scanf("%d",a+i); a[0]^=a[i];}
	for (int i=1;i<=n;++i){scanf("%d",b+i); b[0]^=b[i];}
	for (int i=0;i<=n;++i){++cnt[a[i]]; --cnt[b[i]];}
	for (auto i:cnt) if (i.second){puts("-1"); return 0;}
	for (int i=0;i<=n;++i) fa[a[i]]=a[i];
	vis[a[0]]=1; ans=1;
	for (int i=0;i<=n;++i){
		if (a[i]!=b[i]){
			ans+=(!vis[a[i]])+(!vis[b[i]]);
			vis[a[i]]=vis[b[i]]=1;
			++ans;
			int x=gfa(a[i]),y=gfa(b[i]);
			if (x!=y){
				--ans;
				fa[x]=y;
			}
		}
	}
	printf("%d\n",ans+fl-1-(a[0]!=b[0]));
	
	return 0;
}
			