密码专家
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

某天黄先生收到了学妹给他发的一个只包含前五个小写字母的字符串 S(只包含 a,b,c,d,e 五种字符),虽然他也不知道是啥意思。其实这个字符串S是密文,黄先生的宿敌李先生知道后,怕黄先生破解出该字符串的信息,想把字符串S破坏掉,但是黄先生给他的手机加了密,李先生要删除任意一个字母都会付出一定的代价,而这个代价与这个字母左右两个相邻的字母有关。第 i 个字母会保护第 j 个字母,其能力值为 Wi,j 

第1个字母为 a, W1,2 表示字母 a 保护 字母 b 的能力值为 W1,2 。

设删除要第 i 位的字符 c 的代价为 Wl,c + Wr,c ( l,r 分别表示离第 i 位左右两边相邻还没被删除的字符),如果第 i 位左边为空则 Wl,i 为零,右边同理。

被称为“密码专家”的李先生希望他付出最少的代价来完成任务,您能帮李先生求出最小的代价吗?

输入描述:

第一行给出样例组数 t(1<=t<=10)。

每组样例的第 1 行到第 5 行,每行给出 5 个的非负整数。

第 i 行,第 j 列的非负整数 Wi,j(0<=Wi,j<=500) 表示第 i 个字母保护 第j 个字母的能力值 。

第 6 行给出一个正整数 n(1<=n<=200) 表示字符串 S 的长度。

第 7 行给出字符串 S。

输出描述:

在一行中输出最小的代价。
示例1

输入

复制
1
32 40 17 40 35
13 19 7 3 5
11 41 42 6 17
47 21 42 35 23
20 45 36 16 42
5
addbd

输出

复制
88