题目描述
Snuke 有一个由 N 个 0 和 1 组成的整数序列 a=(a1,a2,cdots,aN),以及一个空的整数序列 b。初始状态 ai=Si 作为输入给出。
Snuke 可以任意次数以任意顺序执行以下三种操作:
-
将 a 向右移动一位。换句话说,将 a 替换为 (aN,a1,a2,cdots,aN−1)。
-
将 a 向左移动一位。换句话说,将 a 替换为 (a2,a3,cdots,aN,a1)。
-
在 b 的末尾附加当前的 a1 的值。
你还给定了一个由 M 个整数组成的序列 T=(T1,T2,cdots,TM)。判断是否可以使 b 等于 T。如果可以,请找出所需的最小操作次数。
约束条件
- 1leqNleq2times105
- 1leqMleq2times105
- 0leqSileq1
- 0leqTileq1
- 输入中的所有值均为整数。
输入
输入以以下格式从标准输入中给出:
N M
S1 S2 cdots SN
T1 T2 cdots TM
输出
如果无法使 b 等于 T,请打印 -1
。如果可以,请打印所需的最小操作次数。
示例输入 1
3 4
0 0 1
0 1 1 0
示例输出 1
6
以下六个操作序列将完成任务。
-
将当前的 a1 的值附加到 b 的末尾,得到 b=(0)。
-
将 a 向右移动一位,得到 a=(1,0,0)。
-
将当前的 a1 的值附加到 b 的末尾,得到 b=(0,1)。
-
将当前的 a1 的值附加到 b 的末尾,得到 b=(0,1,1)。
-
将 a 向右移动一位,得到 a=(0,1,0)。
-
将当前的 a1 的值附加到 b 的末尾,得到 b=(0,1,1,0)。
示例输入 2
1 1
0
1
示例输出 2
-1