#4596. Replace

0

Replace

Replace

题目描述

你被给予两个由小写英文字母组成的字符串 SS 和 TT。 Takahashi 从字符串 SS 开始。他可以任意次数且以任意顺序执行 KK 种操作中的任意一种。
第 ii 种操作如下:

支付代价 $1$。 然后,如果当前字符串包含字符 $C_i$,选择其一个出现并将其替换为字符串 $A_i$。 否则,什么也不做。
找到使字符串等于 $T$ 所需的最小总代价。 如果无法做到,请输出 $-1$。

输入格式

输入按照标准输入给出,格式如下: SS TT KK C1C_1 A1A_1 C2C_2 A2A_2 ⋮\vdots CKC_K AKA_K

输出格式

输出使字符串等于 TT 所需的最小总代价。 如果无法做到,请输出 −1-1。

ab
cbca
3
a b
b ca
a efg
4
a
aaaaa
2
a aa
a aaa
2
a
z
1
a abc
-1

提示

1≤∣S∣≤∣T∣≤501\leq |S|\leq |T|\leq 50 1≤K≤501\leq K\leq 50 CiC_i 是 aa、bb、…\ldots 或 zz。 1≤∣Ai∣≤501\leq |A_i|\leq 50 SS、TT 和 AiA_i 都是由小写英文字母组成的字符串。 将 CiC_i 视为长度为 11 的字符串时,Ci≠AiC_i\neq A_i。 所有对 (Ci,Ai)(C_i,A_i) 都是互不相同的。从 S=S=abab 开始,Takahashi 可以通过如下四次操作得到 T=T=cbcacbca:

将 abab 中的第 11 个字符 aa 替换为 bb(第 11 种操作)。字符串变为 bbbb。 将 bbbb 中的第 22 个字符 bb 替换为 caca(第 22 种操作)。字符串变为 bcabca。 将 bcabca 中的第 11 个字符 bb 替换为 caca(第 22 种操作)。字符串变为 cacacaca。 将 cacacaca 中的第 22 个字符 aa 替换为 bb(第 11 种操作)。字符串变为 cbcacbca。

每次操作的代价为 11,总共为 44,这是最小可能值。
两次操作 aa →\to aaaaaa →\to aaaaaaaaaa 的代价为 22,这也是最小可能值。
没有任何操作序列可以把 S=S=aa 变为 T=T=zz。

标签: AtCoder|abc261G

来源

AtCoder|abc261G