AT_agc044_d [AGC044D] Guess the Password
Description
[problemUrl]: https://atcoder.jp/contests/agc044/tasks/agc044_d
**これは対話式の問題です。**
あなたの課題は、秘密のパスワード $ S $ を当てることです。 パスワードは長さ $ L $ 以下の空でない文字列であり、パスワードの各文字は英小文字 (a, b, ..., z)、英大文字 (A, B, ..., Z)、数字 (0, 1, ..., 9) のいずれかです。
秘密のパスワード $ S $ を当てるために、クエリを送ることができます。 クエリは、上述のパスワードの要件を満たす文字列 $ T $ からなり、送られたクエリに対しては $ S $ と $ T $ の編集距離 (考慮する操作は文字の削除、挿入、置換) が回答されます。 送ることができるクエリの数は $ Q $ 個までです。
**注記**: 編集距離 (考慮する操作は文字の削除、挿入、置換) の定義については、[Wikipedia 内のこちらのページ](https://en.wikipedia.org/w/index.php?title=Levenshtein_distance&oldid=954598393) を参照してください。
### Input & Output Format
クエリを送るには、標準出力に以下のように出力せよ (末尾に改行を入れること)。
> ? $ T $
ここで、文字列 $ T $ はパスワードの要件を満たさなければならない。
クエリへの回答 $ ans $ は、標準入力から以下の形式で与えられる。
> $ ans $
秘密のパスワード $ S $ を特定したら、標準出力に以下のように出力せよ (末尾に改行を入れること)。
> ! $ S $
そして、すぐにプログラムを終了させよ。
Input Format
N/A
Output Format
N/A
Explanation/Hint
### 制約
- $ L\ =\ 128 $
- $ Q\ =\ 850 $
- 秘密のパスワード $ S $ は、プログラムとジャッジの対話の開始前に選ばれる。
### 判定
- **出力のたびに標準出力を flush せよ。** これが守られない場合、ジャッジ結果が `TLE` となる可能性がある。
- 秘密のパスワード (とあなたが考えるもの) を出力したら、直ちにプログラムを終了させよ。これが守られない場合のジャッジ結果は未定義である。
- 不正な形式のクエリが送られた場合 (例: 送られた文字列がパスワードの要件を満たさない、出力の先頭に `?` がない)、プログラムが異常終了した場合、または $ Q $ 回を超えてクエリが送られた場合のジャッジ結果は未定義である (`WA` とは限らない)。
### 入出力例
以下の例において、秘密のパスワードは `Atcod3rIsGreat` です。
Input Output $ \texttt{?\ AtcoderIsBad} $ $ 5 $ $ \texttt{?\ AtcoderIsGreat} $ $ 1 $ $ \texttt{!\ Atcod3rIsGreat} $