#agc016d. [agc016_d]XOR Replace

[agc016_d]XOR Replace

問題文

長さ NN の数列 a=(a1,a2,...,aN)a = (a_1, a_2, ..., a_N) があります。 ただし、各 aia_i00 以上の整数です。

すぬけ君は次の操作を繰り返し行うことができます。

  • aa のすべての要素の XOR を xx とする。 整数 ii (1iN1 ≤ i ≤ N) をひとつ選び、aia_ixx に置き換える。

すぬけ君の目標は、aa を数列 b=(b1,b2,...,bN)b = (b_1, b_2, ..., b_N) に一致させることです。 ただし、各 bib_i00 以上の整数です。

目標が達成可能か判定し、達成可能ならば必要な操作回数の最小値を求めてください。

制約

  • 2N1052 ≤ N ≤ 10^5
  • aia_i, bib_i は整数である。
  • 0ai,bi<2300 ≤ a_i, b_i < 2^{30}

入力

入力は以下の形式で標準入力から与えられる。

NN a1a_1 a2a_2 ...... aNa_N b1b_1 b2b_2 ...... bNb_N

出力

目標が達成可能ならば、必要な操作回数の最小値を出力せよ。 達成不可能ならば、代わりに -1 を出力せよ。


入力例 1

3
0 1 2
3 1 0

出力例 1

2

最初、aa のすべての要素の XOR は 33 です。 a1a_1 を選んで 33 に置き換えると、a=(3,1,2)a = (3, 1, 2) となります。

次に、aa のすべての要素の XOR は 00 です。 a3a_3 を選んで 00 に置き換えると、a=(3,1,0)a = (3, 1, 0) となり、bb に一致します。


入力例 2

3
0 1 2
0 1 2

出力例 2

0

入力例 3

2
1 1
0 0

出力例 3

-1

入力例 4

4
0 1 2 3
1 0 3 2

出力例 4

5