12183. Помилка передачі
Степан надіслав Андрію рядок \(T\), що складається з малих англійських літер. У результаті Андрій отримав рядок \(T′\), що складається з малих англійських літер.
\(T′\) може бути змінено з \(T\). Зокрема, відомо, що виконується точно одна з наступних чотирьох умов.
- \(T′\) дорівнює \(T\).
- \(T′\) – це рядок, отриманий шляхом вставки однієї малої англійської літери в одну позицію (можливо, початок і кінець) у \(T\).
- \(T′\) – це рядок, отриманий видаленням одного символу з \(T\).
- \(T′\) – це рядок отриманий шляхом зміни одного символу в \(T\) на іншу малу англійську літеру.
Вам надано рядок \(T′\), отриманий Андрієм, і \(N\) рядків \(S_1 , S_2 ,…, S_N \), які складаються з малих літер англійського алфавсіту. Знайдіть усі рядки серед \(S_1 , S_2 ,…, S_N \), які можуть дорівнювати рядку \(T\), надісланому Степаном.
Обмеження
- \(N\) є цілим числом.
- \(1≤N≤5×10^5\)
- \(S_i\) і \(T′\) — це рядки довжиною від 1 до \(5×10^5\) включно, які складаються з малих літер англійського алфавіту.
- Загальна довжина \(S_1 , S_2 ,…, S_N\) не перевищує \(5×10^5 \).
Формат вхідних даних
Перший рядок містить ціле число \(N\) та \(T′\).
Наступні \(N\) рядків містять цілі числа \(S_i\).
Формат вихідних даних
Нехай (\(i_1 ,i_2 ,…,i_K )\) — послідовність індексів усіх рядків серед \(S_1 , S_2 ,…,S_N \), які можуть дорівнювати \(T\) у порядку зростання. Виведіть довжину \(K\) цієї послідовності ц першому рядку та саму послідовність через пропуск у другому рядку.
Приклад вхідних даних
5 ababc
ababc
babc
abacbc
abdbc
abbac
Приклад вихідних даних
4
1 2 3 4
Серед \(S_1 , S_2 ,…, S_5\) рядки, які можуть дорівнювати \(T\), є \(S_1 , S_2 , S_3 , S_4 \), як пояснюється нижче.
- \(S_1\) може дорівнювати \(T\), оскільки \(T′ = ababc\) дорівнює \(S_1 = ababc\).
- \(S_2\) може дорівнювати \(T\), тому що \(T′ = ababc\) отримується шляхом вставки літери 'a' на початку \(S_2 = babc\).
- \(S_3\) може дорівнювати \(T\), оскільки \(T′ = ababc\) отримується видаленням четвертого символу 'c' із \(S_3 = abacbc\).
- \(S_4\) може дорівнювати \(T\), оскільки \(T′ = ababc\) отримується шляхом зміни третього символу 'd' у \(S_4 = abdbc\) на 'b'.
- \(S_5\) не може дорівнювати \(T\), тому що якщо ми візьмемо \(S_5 = abbac\) як \(T\), то \(T′ = ababc\) не задовольняє жодну з чотирьох умов у постановці задачі.
Коментарі