#icpc2015summerday2k. [icpc2015summer_day2_k]Leapfrog

[icpc2015summer_day2_k]Leapfrog

题目描述

NN 个格子按照环形排列。每个格子从 11NN 编号。对于每个 ii (1leqileqN11\\leq i\\leq N-1),第 ii 个格子和第 i+1i+1 个格子相邻。此外,第 NN 个格子和第 11 个格子相邻。

其中的 MM 个格子中,放有 11 个无法区分的棋子。开始时,棋子放在第 x1,x2,...,xMx_1,\\ x_2,\\ ...,\\ x_M 个格子上。我们希望通过若干次操作,使得棋子被放在第 y1,y2,...,yMy_1,\\ y_2,\\ ...,\\ y_M 个格子上。

  • 选择连续的顺时针或逆时针方向的 33 个格子,依次标记为 A,B,CA,\\ B,\\ C。如果 AABB 上有棋子而 CC 上没有棋子,则将 AA 上的棋子移动到 CC 上。

判断是否可以将棋子放在第 y1,y2,...,yMy_1,\\ y_2,\\ ...,\\ y_M 个格子上。如果可以,求出所需操作的最小次数。

约束条件

  • 3leqNleq3,0003\\leq N\\leq 3,000
  • 1leqMleqN1\\leq M\\leq N
  • 1leqx1<x2<...<xMleqN1\\leq x_1<x_2<...<x_M\\leq N
  • 1leqy1<y2<...<yMleqN1\\leq y_1<y_2<...<y_M\\leq N

输入格式

输入从标准输入读入,具有以下格式。

NN MM x1x_1 x2x_2 ...... xMx_M y1y_1 y2y_2 ...... yMy_M

输出格式

如果可以将棋子放在第 y1,y2,...,yMy_1,\\ y_2,\\ ...,\\ y_M 个格子上,则输出所需操作的最小次数。否则,输出 -1


示例输入 1


7 2
1 2
5 6

示例输出 1


3

可以通过以下 33 次操作实现:

  • 将第 22 个格子的棋子移动到第 77 个格子。
  • 将第 11 个格子的棋子移动到第 66 个格子。
  • 将第 77 个格子的棋子移动到第 55 个格子。

示例输入 2


3 1
1
2

示例输出 2


-1

示例输入 3


2999 3
1 2 3
2 3 4

示例输出 3


4491004