#ABC261G. 替换

替换

替换

题目描述

给定两个由小写英文字母组成的字符串 SSTT

Takahashi 从字符串 SS 开始。他可以按任意顺序、任意次数执行 KK 种操作。

ii 种操作如下:

支付 11 的费用。 然后,如果当前字符串包含字符 CiC_i,则选择其中一个出现位置,将其替换为字符串 AiA_i。 否则,不做任何事。

求使字符串等于 TT 所需的最小总费用。 如果不可能,则输出 1-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

S=S=ab 开始,Takahashi 可以用四次操作得到 T=T=cbca,如下所示:

将 ab 中的第 11 个字符 a 替换为 b(第 11 种操作)。字符串变为 bb。

将 bb 中的第 22 个字符 b 替换为 ca(第 22 种操作)。字符串变为 bca。

将 bca 中的第 11 个字符 b 替换为 ca(第 22 种操作)。字符串变为 caca。

将 caca 中的第 22 个字符 a 替换为 b(第 11 种操作)。字符串变为 cbca。

每次操作产生 11 的费用,共 44,这是最小值。

a
aaaaa
2
a aa
a aaa
2

两次操作 a \to aaa \to aaaaa 产生 22 的费用,这是最小值。

a
z
1
a abc
-1

任何操作序列都无法从 S=S=a 得到 T=T=z。

数据范围

  • 1ST501 \le |S| \le |T| \le 50
  • 1K501 \le K \le 50
  • CiC_i 为 a、b、\ldots、z 中的某个字符
  • 1Ai501 \le |A_i| \le 50
  • SSTTAiA_i 是由小写英文字母组成的字符串
  • CiAiC_i \neq A_i(将 CiC_i 视为长度为 11 的字符串)
  • 所有 (Ci,Ai)(C_i,A_i) 对两两不同
难度 省选/NOI-
通过率
尝试 0
已通过 0
ID
2463
类型
传统题
Time Limit
2000ms
Memory Limit
1024MiB
上传者
标签