#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<map>

#define fo(i,j,l) for(int i=j;i<=l;++i)
#define fd(i,j,l) for(int i=j;i>=l;--i)

using namespace std;
typedef long long ll;
const ll N=12e4;

int a[N],b[N],aa[N],bb[N];
int n,m,hs,ans;
int fa[N];

map<int,int> s;

inline int get(int o)
{return (fa[o]==o)?o:(fa[o]=get(fa[o]));}

int main()
{
	cin>>n;
	fo(i,1,n)scanf("%d",&a[i]),a[n+1]^=a[i];
	fo(i,1,n)scanf("%d",&b[i]),b[n+1]^=b[i];
	++n;
	fo(i,1,n)aa[i]=a[i],bb[i]=b[i];
	sort(aa+1,aa+n+1); sort(bb+1,bb+n+1);
	fo(i,1,n)if(aa[i]!=bb[i]){
		puts("-1");
		return 0;
	}
	int p=0;
	aa[0]=-1;
	fo(i,1,n)if(aa[i]!=aa[i-1]){
		++p;
		s[aa[i]]=p;
	}
	fo(i,1,n)a[i]=s[a[i]];
	fo(i,1,n)b[i]=s[b[i]];
	fo(i,1,n)if(a[i]!=b[i])fa[a[i]]=a[i],fa[b[i]]=b[i],ans=ans+1;
	fo(i,1,n)if(a[i]!=b[i])fa[get(a[i])]=get(b[i]);
	fo(i,1,p)if(!fa[i])fa[i]=get(i);
	fo(i,1,p)if(fa[i]==i)++ans;
	if(a[n]!=b[n])ans-=2;
	else if(fa[a[n]]!=0)--ans;
	if(ans<0)ans=0;
	cout<<ans;
}