問題一覧 > 通常問題

No.2226 Hello, Forgotten World!

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

問題文

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

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

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

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

入力

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

TT
case1case_1
case2case_2
\vdots
caseTcase_T

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

NN
SS

制約

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

出力

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

サンプル

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

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

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

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

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