atcoder#AGC016D. [AGC016D] XOR Replace

[AGC016D] XOR Replace

配点 : 10001000

問題文

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

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

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

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

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

制約

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

入力

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

NN

a1a_1 a2a_2 ...... aNa_N

b1b_1 b2b_2 ...... bNb_N

出力

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

3
0 1 2
3 1 0
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 に一致します。

3
0 1 2
0 1 2
0
2
1 1
0 0
-1
4
0 1 2 3
1 0 3 2
5