出租车司机中村(Nakamura)非常高兴,因为他接到了一个想去几千公里外城市的乘客。然而,他遇到了一个问题。如你所知,日本的大多数出租车都使用液化石油气(LPG),因为它比汽油便宜。全国有超过 50,000 个加油站,但其中只有不到百分之一销售 LPG。虽然他的车的 LPG 油箱是满的,但油箱容量是有限的,而且他的车每升油只能行驶 10 公里,所以如果不中途加油,他可能无法到达目的地。他知道所有 LPG 加气站的位置。
你的任务是编写一个程序,寻找从当前位置到目的地的最佳路线,且途中不会耗尽燃料。
输入格式
输入由多个数据集组成,每个数据集的格式如下:
N M cap src dest c1,1 c1,2 d1 c2,1 c2,2 d2 ... cN,1 cN,2 dN s1 s2 ... sM
每个数据集的第一行包含三个整数 $N, M, cap$,其中 $N$ 是道路数量($1 \le N \le 3000$),$M$ 是 LPG 加气站的数量($1 \le M \le 300$),$cap$ 是油箱容量($1 \le cap \le 200$),单位为升。
下一行包含当前城市的名称($src$)和目的地城市的名称($dest$)。目的地城市总是与当前城市不同。
接下来的 $N$ 行描述连接城市的道路。第 $i$ 条道路($1 \le i \le N$)连接两个不同的城市 $c_{i,1}$ 和 $c_{i,2}$,其整数距离为 $d_i$($0 < d_i \le 2000$),单位为公里,他可以从其中任一城市前往另一个城市。你可以假设没有两条不同的道路连接同一对城市。各列之间用单个空格分隔。
接下来的 $M$ 行($s_1, s_2, \dots, s_M$)表示设有 LPG 加气站的城市名称。你可以假设设有 LPG 加气站的城市至少与一条道路相连。
城市名称不超过 15 个字符。名称中只允许使用英文大小写字母('A' 到 'Z' 以及 'a' 到 'z',区分大小写)。
输入以包含三个零的一行结束。
输出格式
对于每个数据集,输出一行,包含从当前城市到目的地城市的最短可能行程长度(单位为公里)。如果中村无法到达目的地,则输出 "-1"(不含引号)。你不能输出任何其他字符。
实际的油箱容量通常比规格说明书上的稍大一些,因此你可以假设即使剩余油量恰好为零,他也能到达城市。此外,你总是可以在目的地加满油,因此无需担心回程。
样例
输入样例 1
6 3 34 Tokyo Kyoto Tokyo Niigata 335 Tokyo Shizuoka 174 Shizuoka Nagoya 176 Nagoya Kyoto 195 Toyama Niigata 215 Toyama Kyoto 296 Nagoya Niigata Toyama 6 3 30 Tokyo Kyoto Tokyo Niigata 335 Tokyo Shizuoka 174 Shizuoka Nagoya 176 Nagoya Kyoto 195 Toyama Niigata 215 Toyama Kyoto 296 Nagoya Niigata Toyama 0 0 0
输出样例 1
846 -1