#U2021JG2. Telephone

Telephone

Farmer John 的N 头奶牛,编号为 1…N,站成一行(1≤N≤5⋅104^4)。第i 头奶牛的品种编号为bi_i,范围为 1…K,其中 1≤K≤50。奶牛们需要你帮助求出如何最优地从奶牛 1 传输一条信息到奶牛 N。从奶牛 i 传输信息到奶牛 j 花费时间 |i−j|。然而,不是所有品种的奶牛都愿意互相交谈,如一个 K×K 的方阵S 所表示,其中如果一头品种 i 的奶牛愿意传输一条信息给一头品种 j 的奶牛,那么 Sij_{ij}=1,否则为 0。不保证 Sij_{ij}=Sji_{ji},并且如果品种 i 的奶牛之间不愿意互相交流时可以有 Sii_{ii}=0。

请求出传输信息所需的最小时间。

输入格式(从终端/标准输入读入):

输入的第一行包含 N 和 K。下一行包含 N 个空格分隔的整数b1_1,b2_2,…,bN_N

以下K 行描述了方阵S。每行包含一个由 K 个二进制位组成的字符串,从上往下第 i 个字符串的第j 位为 Sij_{ij}

输出格式(输出至终端/标准输出):

输出一个整数,为需要的最小时间。如果不可能从奶牛 1 传输信息至奶牛 N,输出 −1。

输入样例:

5 4
1 4 2 3 4
1010
0001
0110
0100

输出样例:

6

最优传输序列为 1→4→3→5。总时间为 |1−4|+|4−3|+|3−5|=6。

测试点性质:

  • 测试点 1-5 满足N≤1000。
  • 测试点 6-13 没有额外限制。