E - Nearest String
Editorial
/


Time Limit: 3 sec / Memory Limit: 1024 MB
配点 : 800 点
問題文
高橋くんは、文字列 a に対して、以下の 2 種類の操作が行なえます。
- a の先頭、または末尾の 1 文字を削除する。これには X のコストがかかる。
- a の末尾に、好きな 1 文字を追加する。これには Y のコストがかかる。
高橋くんは今、N 個の文字列 S_0,S_1,\cdots,S_{N-1} を持っています。 高橋くんの友達の青木くんは、高橋くんに次の Q 個の質問を行います。
- 質問 i (0 \leq i \leq Q-1): 青木くんが文字列 T_i を見せる。 T_i に上記の操作を繰り返し行い、高橋くんの持っている N 個の文字列のいずれかに一致させるために必要なコストの最小値を求めよ。
多忙な高橋くんの代わりに、これらの質問に答えるプログラムを作成してください。
制約
- 1 \leq N \leq 10^5
- 1 \leq Q \leq 10^5
- 1 \leq X,Y \leq 10^9
- 1 \leq |S_i|
- \sum_{i=0}^{N-1} |S_i| \leq 5 \times 10^5
- S_i \neq S_j (i \neq j)
- 1 \leq |T_i|
- \sum_{i=0}^{Q-1} |T_i| \leq 5 \times 10^5
- T_i \neq T_j (i \neq j)
- 入力される数はすべて整数である。
- 入力される文字列はすべて英小文字からなる文字列である。
入力
入力は以下の形式で標準入力から与えられる。
N Q X Y S_0 S_1 \vdots S_{N-1} T_0 T_1 \vdots T_{Q-1}
出力
Q 行出力せよ。 i+1 (0 \leq i \leq Q-1) 行目には、質問 i の答えを出力せよ。
入力例 1
3 3 4 2 b bcd cd a ab abc
出力例 1
6 4 6
例えば、質問 2 について考えると、以下のように操作するのが最適です。
abc
の先頭の文字を削除して、bc
を得る。コストが 4 かかる。bc
の末尾にd
を追加して、bcd
を得る。コストが 2 かかる。
入力例 2
4 3 1 100 a aaaa aaaaaaa aaaaaaaaaa aaa aaaaaa aaaaaaaaa
出力例 2
2 2 2
入力例 3
10 10 86 69 bbabbaaaaa babaababab bbababbbba aaaaaaaaab bbbbbbaabb aabbabbbba babbbbbbaa baaabbaaaa aaaaababbb ababaaaaaa bbaabbbbaa abbbbabbbb abbaaabaaa ababaaaaab bbaabbaaaa abbbbbbabb aabbbabbba aaabbbaaaa abbbababab babaaabbbb
出力例 3
930 620 775 155 775 465 775 930 620 620