DigitalArts プログラミングコンテスト2012

A - C-Filter


Time limit時間制限 : 2sec / Memory limitメモリ制限 : 64MB

問題文

セキュリティに興味がある高橋君は、デジタルアーツ株式会社に就職したい青年です。
彼は、面接で自分をアピールするために、得意なプログラミングでフィルタリングソフト「C-Filter」を作ろうと考えています。
「C-Filter」は、与えられた文字列 s に、あらかじめ登録しておいた「NGワード」と一致する文字列が存在する場合、その文字列の長さと等しい数の *に置き換えて出力するソフトウェアです。この文字列を置き換える処理をフィルタリングと呼びます。
「NGワード」とは、半角英小文字と*から構成されます。*はすべての半角英小文字 1 文字と一致します。
例えば myonmyon は、NGワードmyo*myonと一致します。
ただし、NGワードは単語ごとに適用されるため、myo myon はNGワード myo*myonとは一致しません。
また、NGワードはある単語に対して完全に一致する必要があります。
例えば、abcdeは、NGワードabcbcdcdeに一致しません。

文字列 s と、NGワードが与えられるので、C-Filterの出力する文字列を答えてください。

入力

入力は以下の形式で標準入力から与えられる。
s
N
t_{1}
:
:
t_{N}
  1. 入力は N+2 行からなる。
  2. 1 行目には 1 文字以上 1,000 文字以下の文字列 s が与えられる。
    • s はフィルタリングする対象の文字列を半角スペースで区切って繋げた文字列である。
  3. 2 行目にはNGワードの個数を表す整数 N(0≦N≦50) が与えられる。
  4. 3 行目から N+2 行目までNGワードを表す文字列 t_{i}(1≦i≦N)が与えられる。
    • 文字列 t_{i} は半角英小文字と * から構成される。
    • 文字列 t_{i} の長さは 1 文字以上、 20 文字以下である。
    • 文字列 t_{i} に含まれる * は、半角スペースを除くすべての半角英小文字 1 文字をフィルタリングの対象とします。

出力

入力された文字列 s をC-Filterでフィルタリングした結果を 1 行で出力せよ。
なお、最後には改行を出力せよ。

入力例 1

abc aaa ababa abcba abc
2
abc
**a**

出力例 1

*** aaa ***** abcba ***
  • NGワードにはabc**a**2 つの文字列が登録されています。
  • 1 番目と 5 番目に入力されるabcはNGワードabcに一致するので、***と出力されます。
  • 3 番目に入力されるababaはNGワード**a**に一致するので、*****と出力されます。

入力例 2

aaaa aaa aaaaaa aaaa
3
a
aa
aaa

出力例 2

aaaa *** aaaaaa aaaa
  • 完全一致のパターンだけを考慮すれば良いため、aaaaaaaaa は変える必要がありません。

入力例 3

i have a pen
1
*

出力例 3

* have * pen
  • 1文字の単語だけNGワードとして認識されます。

入力例 4

digital arts
1
digital*arts

出力例 4

digital arts
  • 半角スペースは*にマッチしません。

Source name

DigitalArts 2012

Submit提出する