Byteman 把他所有的积蓄都存在一个旧保险箱里。这个保险箱的锁由 $n$ 个相同的转轮组成,每个转轮上都写着同一个长度为 $m$ 的单词。转轮可以独立旋转(这意味着每个转轮都可以处于 $m$ 种不同的位置)。当所有转轮在所有 $m$ 个位置上显示的字母都相同时,保险箱就会打开。
最近,Byteman 的一位熟人告诉他,把钱存在银行里是个好主意。Byteman 决定尽快打开他的保险箱,并将他所有的钱转入一个高利息的银行账户。假设将任何转轮向左或向右旋转 $\frac{360}{m}$ 度都需要一秒钟,请计算打开 Byteman 保险箱所需的最短时间。
帮帮 Byteman!
输入格式
标准输入的第一行包含两个整数 $n$ 和 $m$ ($2 \le n, m \le 1\,000\,000$),用空格分隔,分别表示锁中转轮的数量和每个转轮上单词的长度。输入的第二行包含一个长度为 $m$ 的单词 $s_1s_2\ldots s_m$,由大写英文字母组成。第三行包含 $n$ 个整数 $o_1o_2\ldots o_n$ ($0 \le o_{i} < m$),用空格分隔。$o_{i} = k$ 表示第 $i$ 个转轮上的单词向左旋转了 $k$ 个位置(相对于某个定义的初始位置),这意味着它处于 $s_{k+1}s_{k+2} \ldots s_{m}s_{1}s_{2}\ldots s_{k}$ 的位置。例如,如果 $o_{i} = 0$,则第 $i$ 个转轮上的单词没有旋转。
输出格式
标准输出的第一行且仅包含一行,输出一个整数,表示打开 Byteman 保险箱所需的最短时间。
样例
输入 1
4 6 SLOWIK 2 0 3 5
输出 1
6
说明
对于示例中的锁,每个转轮上显示的单词如下:
OWIKSL SLOWIK WIKSLO KSLOWI
例如,将第一个转轮向左旋转一个位置得到 WIKSLO。如果我们改为将同一个转轮向右旋转,则得到 LOWIKS。