问题3313--「Poetize7」电话线路

3313: 「Poetize7」电话线路

时间限制: 20000 Sec  内存限制: 512 MB
提交: 0  解决: 0
[提交] [状态] [讨论版] [命题人:]

题目描述

每台电话都有一个独一无二的号码,用一个十位的十进制数字串表示。电话a和b之间能直接通信,当且仅当“a与b之间仅有一个数字不同”,或者“交换a的某两位上的数字后,a与b相同”。而a、b之间建立通信联系所需要的时间为cost[ lcp(a,b) ],其中cost[]是一个常数数组,lcp(a,b)表示a、b的最长公共前缀的长度,lcp(a,b)越大,通信时间越快。 另外,如果a、b能通信,b、c能通信,那么a、c也能借助b来通信。a、c借助b建立通信联系所用时间是cost[ lcp(a,b) ]+ cost[ lcp(b,c) ]。 现在Freda想给Rainbow打电话,请你告诉Freda,她最快需要多少时间才能与与Rainbow建立通信联系?

输入

第一行一个整数N,表示电话号码的个数。 第二行10个整数,第i个整数表示cost[i-1],即当两个能够直接通信的号码的最长公共前缀为i-1时,二者之间建立通信联系所需的时间。 接下来N行每行一个整数表示电话号码。第一个是Freda的电话号码,第N个是Rainbow的电话号码。

输出

一个整数,表示所求时间。若Freda和Rainbow不能建立通信联系,输出-1。

样例输入

5
100 10 10 10 1 1 1 1 1 1
9123493342
3123493942
9223433942
3223493942
9223433945

样例输出

211

来源/分类


[提交] [状态]