#arc125a. [arc125_a]Dial Up

[arc125_a]Dial Up

题目描述

Snuke 有一个由 NN0011 组成的整数序列 a=(a1,a2,cdots,aN)a=(a_1,a_2,\\cdots,a_N),以及一个空的整数序列 bb。初始状态 ai=Sia_i=S_i 作为输入给出。

Snuke 可以任意次数以任意顺序执行以下三种操作:

  • aa 向右移动一位。换句话说,将 aa 替换为 (aN,a1,a2,cdots,aN1)(a_N,a_1,a_2,\\cdots,a_{N-1})

  • aa 向左移动一位。换句话说,将 aa 替换为 (a2,a3,cdots,aN,a1)(a_2,a_3,\\cdots,a_N,a_1)

  • bb 的末尾附加当前的 a1a_1 的值。

你还给定了一个由 MM 个整数组成的序列 T=(T1,T2,cdots,TM)T=(T_1,T_2,\\cdots,T_M)。判断是否可以使 bb 等于 TT。如果可以,请找出所需的最小操作次数。

约束条件

  • 1leqNleq2times1051 \\leq N \\leq 2 \\times 10^5
  • 1leqMleq2times1051 \\leq M \\leq 2 \\times 10^5
  • 0leqSileq10 \\leq S_i \\leq 1
  • 0leqTileq10 \\leq T_i \\leq 1
  • 输入中的所有值均为整数。

输入

输入以以下格式从标准输入中给出:

NN MM S1S_1 S2S_2 cdots\\cdots SNS_N T1T_1 T2T_2 cdots\\cdots TMT_M

输出

如果无法使 bb 等于 TT,请打印 -1。如果可以,请打印所需的最小操作次数。

示例输入 1

3 4
0 0 1
0 1 1 0

示例输出 1

6

以下六个操作序列将完成任务。

  • 将当前的 a1a_1 的值附加到 bb 的末尾,得到 b=(0)b=(0)

  • aa 向右移动一位,得到 a=(1,0,0)a=(1,0,0)

  • 将当前的 a1a_1 的值附加到 bb 的末尾,得到 b=(0,1)b=(0,1)

  • 将当前的 a1a_1 的值附加到 bb 的末尾,得到 b=(0,1,1)b=(0,1,1)

  • aa 向右移动一位,得到 a=(0,1,0)a=(0,1,0)

  • 将当前的 a1a_1 的值附加到 bb 的末尾,得到 b=(0,1,1,0)b=(0,1,1,0)

示例输入 2

1 1
0
1

示例输出 2

-1