#abc261g. [abc261_g]Replace

[abc261_g]Replace

题目描述

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

高桥从字符串 SS 开始。他可以任意次数以任意顺序执行 KK 种操作。第 ii 个操作如下:

支付代价 11。然后,如果当前字符串中包含字符 CiC_i,选择其中一个出现的位置,并用字符串 AiA_i 替换它。否则,什么也不做。

找出使字符串变为 TT 所需的最小总代价。如果无法实现,则输出 1-1

约束条件

  • 1ST501\leq |S|\leq |T|\leq 50
  • 1K501\leq K\leq 50
  • CiC_iab\ldots、或 z
  • 1Ai501\leq |A_i|\leq 50
  • SSTTAiA_i 是由小写英文字母组成的字符串。
  • CiC_i 视为长度为 11 的字符串,则 CineqAiC_i\\neq A_i
  • 所有的 (Ci,Ai)(C_i,A_i) 对都是不同的。

输入

输入从标准输入给出,格式如下:

SS TT KK C1C_1 A1A_1 C2C_2 A2A_2 \vdots CKC_K AKA_K

输出

输出使字符串变为 TT 所需的最小总代价。如果无法实现,则输出 1-1


示例1

ab
cbca
3
a b
b ca
a efg

示例输出1

S=S=ab 开始,高桥可以按如下方式使用四次操作使得 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,这是最小的可能代价。


示例2

a
aaaaa
2
a aa
a aaa

示例输出2

两次操作 a to\\to aaa to\\to aaaaa 总共支付代价 22,这是最小的可能代价。


示例3

a
z
1
a abc

示例输出3

-1

无法通过操作将 S=S=a 变为 T=T=z