你是一名全职拆弹专家。你的职责包括保持通话,并不让任何人被炸飞。
这一次,你在拆除炸弹前遇到了最后的障碍——一个密码锁。该锁包含 $n$ 个旋转圆盘,每个圆盘上按递增顺序包含 $0$ 到 $m-1$ 之间的所有整数。圆盘向前旋转一次会使上面的数字增加 $1$(当数字为 $m-1$ 时,它会变为 $0$)。同样,圆盘向后旋转一次会使上面的数字减少 $1$(当数字为 $0$ 时,它会变为 $m-1$)。
你看到了锁的初始状态,并且完全知道打开锁的密码组合。不幸的是,这个锁有故障。每当你向前或向后旋转第 $i$ 个圆盘时,第 $i+1$ 个圆盘也会随之向相同方向旋转。同样,每当你旋转第 $n$ 个圆盘时,第一个圆盘也会随之向相同方向旋转。
一方面,这可能有助于你更快地打开锁;另一方面,这可能导致你根本无法打开锁;谁知道呢?好吧,当然是你。请找出打开锁所需执行的最少圆盘旋转次数,或者确定这是不可能的(然后有人就要被炸飞了)。
输入格式
第一行包含两个整数 $n$ 和 $m$ ($2 \le n \le 2 \cdot 10^5; 2 \le m \le 10^9$),分别表示锁中圆盘的数量和圆盘上数字的范围。第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$ ($0 \le a_i < m$),表示第 $1, 2, \dots, n$ 个圆盘上的初始数字。第三行包含 $n$ 个整数 $b_1, b_2, \dots, b_n$ ($0 \le b_i < m$),表示第 $1, 2, \dots, n$ 个圆盘上的目标数字。
输出格式
如果无法打开锁,输出 $-1$。否则,输出一个整数,表示打开锁所需执行的最少圆盘旋转次数。
样例
样例输入 1
6 3 0 1 0 1 0 1 1 0 1 0 1 0
样例输出 1
4
样例输入 2
3 7 4 2 1 1 2 5
样例输出 2
3
样例输入 3
2 10 7 7 3 5
样例输出 3
-1
说明
在第一个样例测试中,一种可能的解决方案是将第一个和第二个圆盘向前旋转一次,并将第四个和第五个圆盘向后旋转一次。
在第二个样例测试中,打开锁最快的方法是将第三个圆盘向后旋转三次。
在第三个样例测试中,无论你旋转哪个圆盘,圆盘上的数字始终保持相等。