#agc016d. [agc016_d]XOR Replace

[agc016_d]XOR Replace

题目描述

给定长度为 NN 的序列 a=(a1,a2,...,aN)a = (a_1, a_2, ..., a_N)。在这里,每个 aia_i 都是一个非负整数。

Snuke 可以重复执行以下操作:

  • aa 中所有元素的异或值为 xx。选择一个整数 ii (1iN1 ≤ i ≤ N),并将 aia_i 替换为 xx

Snuke 的目标是将 aa 匹配到另一个序列 b=(b1,b2,...,bN)b = (b_1, b_2, ..., b_N)。在这里,每个 bib_i 都是一个非负整数。

确定是否可以达到目标,并找到达到目标所需的最小操作次数(如果答案为正)。

约束条件

  • 2N1052 ≤ N ≤ 10^5
  • aia_ibib_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 中所有元素的异或值为 33。如果我们将 a1a_1 替换为 33aa 变为 (3,1,2)(3, 1, 2)

现在,aa 中所有元素的异或值为 00。如果我们将 a3a_3 替换为 00aa 变为 (3,1,0)(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