#abc261g. [abc261_g]Replace

[abc261_g]Replace

問題文

英小文字のみからなる 22 つの文字列 S,TS,T が与えられます。

高橋君は文字列 SS から始めて、 次の KK 種類の操作のうち 11 つを選んで行う事を 好きなだけ繰り返す事ができます。
ii 番目の操作は次の形で与えられます。

コストを 11 支払う。 その後、文字列中に文字 CiC_i が含まれるとき、そのうちの 11 つを選び、文字列 AiA_i に置き換える。 含まれないならば何も行わない。

文字列を TT と一致させるために必要な最小コストを求めてください。 ただし、TT と一致させることが不可能な場合は \-1\-1 を出力してください。

制約

  • 1leqSleqTleq501\\leq |S|\\leq |T|\\leq 50
  • 1leqKleq501\\leq K\\leq 50
  • CiC_ia, b,ldots\\ldots, z のいずれか
  • 1leqAileq501\\leq |A_i|\\leq 50
  • S,T,AiS,T,A_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\\vdots CKC_K AKA_K

出力

SSTT と一致させるために必要な最小コストを出力せよ。 ただし、TT と一致させることが不可能な場合は \-1\-1 を出力せよ。


入力例 1

ab
cbca
3
a b
b ca
a efg

出力例 1

4

高橋君は S=S=ab から始めて、次のように 44 回操作を行う事で、 T=T=cbca を作ることができます。

  • ab11 文字目 a を選んで b に置き換える ( 11 番目の操作) 。文字列は bb となる。
  • bb22 文字目 b を選んで ca に置き換える ( 22 番目の操作) 。文字列は bca となる。
  • bca11 文字目 b を選んで ca に置き換える ( 22 番目の操作) 。文字列は caca となる。
  • caca22 文字目 a を選んで b に置き換える ( 11 番目の操作) 。文字列は cbca となる。

各操作においてコストが 11 かかるため、必要なコストは 44 となり、このときが最小です。


入力例 2

a
aaaaa
2
a aa
a aaa

出力例 2

2

ato\\toaaato\\toaaaaa とした時、必要なコストは 22 となり、 このときが最小です。


入力例 3

a
z
1
a abc

出力例 3

-1

どのように操作を行っても、S=S=a から T=T=z を作る事は出来ません。