AT_abc324_c [ABC324C] Error Correction
Description
[problemUrl]: https://atcoder.jp/contests/abc324/tasks/abc324_c
高橋君は英小文字からなる文字列 $ T $ を青木君に向けて送りました。その結果、青木君は英小文字からなる文字列 $ T' $ を受信しました。
$ T' $ は $ T $ から一部が変更されてしまっている可能性があり、具体的には、下記の $ 4 $ つのうちのちょうど $ 1 $ つが成り立つことがわかっています。
- $ T' $ は、$ T $ と等しい。
- $ T' $ は、$ T $ のいずれか $ 1 $ つの位置(先頭と末尾も含む)に英小文字を $ 1 $ つ挿入して得られる文字列である。
- $ T' $ は、$ T $ からある $ 1 $ 文字を削除して得られる文字列である。
- $ T' $ は、$ T $ のある $ 1 $ 文字を別の英小文字に変更して得られる文字列である。
青木君が受信した文字列 $ T' $ と、英小文字からなる $ N $ 個の文字列 $ S_1,\ S_2,\ \ldots,\ S_N $ が入力として与えられるので、 $ S_1,\ S_2,\ \ldots,\ S_N $ のうち、高橋君が送った文字列 $ T $ と等しい可能性があるものをすべて求めてください。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ T' $ $ S_1 $ $ S_2 $ $ \vdots $ $ S_N $
Output Format
$ S_1,\ S_2,\ \ldots,\ S_N $ のうち $ T $ と等しい可能性があるものすべての添字を**昇順に**並べた列を $ (i_1,\ i_2,\ \ldots,\ i_K) $ とする。 この列の長さ $ K $ および列自体を、下記の形式にしたがって出力せよ。
> $ K $ $ i_1 $ $ i_2 $ $ \ldots $ $ i_K $
Explanation/Hint
### 制約
- $ N $ は整数
- $ 1\ \leq\ N\ \leq\ 5\ \times\ 10^5 $
- $ S_i $ と $ T' $ は英小文字からなる長さ $ 1 $ 以上 $ 5\ \times\ 10^5 $ 以下の文字列
- $ S_1,\ S_2,\ \ldots,\ S_N $ の長さの総和は $ 5\ \times\ 10^5 $ 以下
### Sample Explanation 1
$ S_1,\ S_2,\ \ldots,\ S_5 $ のうち、$ T $ と等しい可能性があるものは $ S_1,\ S_2,\ S_3,\ S_4 $ の $ 4 $ つであることが下記の通りわかります。 - $ S_1 $ は $ T $ と等しい可能性があります。なぜなら、$ T'\ = $ `ababc` は $ S_1\ = $ `ababc` と等しいからです。 - $ S_2 $ は $ T $ と等しい可能性があります。なぜなら、$ T'\ = $ `ababc` は $ S_2\ = $ `babc` の先頭に文字 `a` を挿入して得られる文字列だからです。 - $ S_3 $ は $ T $ と等しい可能性があります。なぜなら、$ T'\ = $ `ababc` は $ S_3\ = $ `abacbc` から $ 4 $ 文字目の `c` を削除して得られる文字列だからです。 - $ S_4 $ は $ T $ と等しい可能性があります。なぜなら、$ T'\ = $ `ababc` は $ S_4\ = $ `abdbc` の $ 3 $ 文字目の `d` を `b` に変更して得られる文字列だからです。 - $ S_5 $ は $ T $ と等しい可能性はありません。なぜなら、$ S_5\ = $ `abbac` を $ T $ としたとき、$ T'\ = $ `ababc` は問題文中の $ 4 $ つの条件をいずれも満たさないからです。