問題一覧 > 通常問題

No.2226 Hello, Forgotten World!

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 132
作問者 : AngrySadEightAngrySadEight / テスター : akakimidoriakakimidori 👑 p-adicp-adic norikamenorikame
1 ProblemId : 8563 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2023-02-10 13:51:56

問題文

はちじくんは,友人の誕生日にプレゼントとして英小文字からなる文字列 $S$ を用意して渡すことにしました.

友人を驚かせようと,はちじくんは文字列 $S$ を連続する部分列として helloworld を含むように作ろうとしました.しかし,はちじくんは,作ろうとした文字列の一部を忘れてしまいました.

英小文字と,? からなる長さ $N$ の文字列 $S$ が与えられ,? ははちじくんがその箇所の文字を忘れたことを表します.はちじくんのために,? を英小文字に置き換えて,連続する部分列としてhelloworld を含む文字列を復元してください.ただし,そのような文字列が複数ある場合には,その中で辞書順最小のものを求め,そのような文字列が無い場合はその旨を報告してください.

$T$ 個のテストケースが与えられるので,それぞれに対して答えを求めてください.

入力

入力は以下の形式で標準入力から与えられる.

$T$
$case_1$
$case_2$
$\vdots$
$case_T$

各ケースは以下の形式で与えられる.

$N$
$S$

制約

  • $N, T$ は整数である.
  • $1 \leq T \leq 20$
  • $10 \leq N \leq 1000$
  • $S$ は英小文字および ? のみからなる長さ $N$ の文字列である.

出力

$T$ 行にわたって出力せよ.$i(1 \leq i \leq T)$ 行目には $i$ 番目のテストケースについて,$S$ のうち ? である箇所を英小文字に変えることで連続する部分列として helloworld を含むようにすることが不可能ならば,-1 を出力せよ.可能ならば,そのような文字列の中で辞書順最小のものを出力せよ.

サンプル

サンプル1
入力
3
13
g?e??owo??d?d
26
abcdefghijklmnopq?????????
10
helloworld
出力
ghelloworldad
-1
helloworld

1つ目のテストケースについて,$2$ 文字目から $11$ 文字目が helloworld となっており,確かに連続する部分列として helloworld を含みます.ほかに ghelloworldld なども連続する部分列として helloworld を含みますが,辞書順最小のものを出力する必要があることに注意してください.

2つ目のテストケースについて,$9$ 個ある ? をどのような文字に変えたとしても,連続する部分列として helloworld を含むようにはできません.

3つ目のテストケースについて,helloworld それ自身も,連続する部分列として helloworld を含んでいます.

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。