CF237E Build String

题目描述

你需要使用一些字符串 $s_1,s_2,\dots,s_n$ 来构建字符串 $t$,你可以执行 $|t|$($|t|$ 是字符串 $t$ 的长度)次操作: 1. 从字符串 $s_1,s_2,\dots,s_n$ 中选择一个非空字符串; 2. 从所选字符串中选择一个字符并将其写在纸上; 3. 从所选字符串中删除所选字符。 注意:执行上述操作后,字符串 $s_1,s_2,\dots,s_n$ 中的字符总数减少 $1$。 我们认为构建出了字符串 $t$,当且仅当写在纸上的字符按顺序连起来为 $t$。 但是还有其他限制:对于每个字符串 $s_i$,有 $a_i$ 为允许从字符串 $s_i$ 中删除的最大字符数。 而且,从字符串 $s_i$ 中每个删除字符的操作都需要一些代价。对于 $s_i$,从中删除 $1$ 个字符需要花费 $i$ 的代价。 你的任务是计算根据给定规则构建字符串 $t$ 所需的最小代价。

输入格式

输入的第一行包含字符串 $t$。 第二行包含一个整数 $n$。 接下来的 $n$ 行,每一行都包含一个字符串 $s_i$ 和一个整数 $a_i$(使用空格隔开),含义如题目所述。

输出格式

输出一个数字,为最小代价。若无解,请输出 $-1$。

说明/提示

### 第一个样例: 1. 第一个字符串中取字符“b”和“z”; 2. 第二个字符串中取字符“a”,“e”和“b”。 在这种方案下,字符串 $t$ 的代价是 $2\times1+3\times2=8$。 ### 第二个样例 1. 第一个字符串中取两个字符“a”; 2. 第二个字符串中取字符“c”; 3. 第三个字符串中取两个字符“a”; 4. 第四个字符串中取两个字符“b”。 在这种方案下,字符串t的代价是 $2\times1+1\times2+2\times3+2\times4=18$。 ### 第三个样例 无解,因为给定字符串中没有字符“y”。 输入中的所有字符串仅由小写英文字母组成。 $1\le|t|,|s_i|\le100$,$1\le n\le100$