AT_abc261_g [ABC261G] Replace
题目描述
给定两个仅由小写英文字母组成的字符串 $S$ 和 $T$。
高桥君从字符串 $S$ 开始,可以任意多次重复选择以下 $K$ 种操作中的一种进行操作。
第 $i$ 种操作的形式如下:
> 支付 $1$ 的代价。然后,如果字符串中包含**字符** $C_i$,则选择其中一个 $C_i$,将其替换为**字符串** $A_i$。如果不包含,则什么也不做。
请你求出将字符串 $S$ 变为与 $T$ 完全相同所需的最小总代价。如果无法变为 $T$,则输出 $-1$。
输入格式
输入以如下格式从标准输入读入。
> $S$ $T$
> $K$
> $C_1$ $A_1$
> $C_2$ $A_2$
> $\vdots$
> $C_K$ $A_K$
输出格式
输出将 $S$ 变为 $T$ 所需的最小总代价。如果无法变为 $T$,则输出 $-1$。
说明/提示
## 限制条件
- $1 \leq |S| \leq |T| \leq 50$
- $1 \leq K \leq 50$
- $C_i$ 是 `a`、`b`、$\ldots$、`z` 中的某一个字符
- $1 \leq |A_i| \leq 50$
- $S$、$T$、$A_i$ 均为仅由小写英文字母组成的字符串
- 将 $C_i$ 视为长度为 $1$ 的字符串时,有 $C_i \neq A_i$
- 所有 $(C_i, A_i)$ 均不同
## 样例解释 1
高桥君从 $S=$`ab` 开始,可以通过如下 $4$ 次操作将其变为 $T=$`cbca`:
- 选择 `ab` 的第 $1$ 个字符 `a`,用 `b` 替换(第 $1$ 种操作)。字符串变为 `bb`。
- 选择 `bb` 的第 $2$ 个字符 `b`,用 `ca` 替换(第 $2$ 种操作)。字符串变为 `bca`。
- 选择 `bca` 的第 $1$ 个字符 `b`,用 `ca` 替换(第 $2$ 种操作)。字符串变为 `caca`。
- 选择 `caca` 的第 $2$ 个字符 `a`,用 `b` 替换(第 $1$ 种操作)。字符串变为 `cbca`。
每次操作的代价为 $1$,因此总代价为 $4$,且这是最小值。
## 样例解释 2
`a \to aaa \to aaaaa`,总代价为 $2$,且这是最小值。
## 样例解释 3
无论如何操作,都无法将 $S=$`a` 变为 $T=$`z`。
由 ChatGPT 4.1 翻译