На розпродажі в гаражі ми знаходимо чудову старовинну друкарську машинку за вигідною ціною! Збуджені, ми мчимо додому, вставляємо аркуш паперу й починаємо друкувати. Однак наше захоплення згасає, коли ми придивляємося до вихідних даних: усі слова переплутані! Наприклад, вона друкує «stop» замість «post» і «least» замість «stale». Обережно ми пробуємо ще раз, але тепер вона друкує «spot» і «slate». Після кількох експериментів ми виявляємо, що перед друкуванням кожної літери є випадкова затримка, яка плутає порядок. Тепер ми розуміємо, чому її продали так дешево!
Ми усвідомлюємо, що ця особливість дозволяє нам створювати анаграми, тобто слова, утворені перестановкою літер іншого слова. Задоволені своєю знахідкою, ми проводимо решту дня за створенням сотень анаграм.
Ваше завдання: маючи цільове слово та набір слів-кандидатів, знайти підмножину тих кандидатів, які є анаграмами цільового слова.
Анаграма - це перестановка літер, з яких утворюється нове слово: наприклад, "owns" є анаграмою "snow".
Слово не є анаграмою самого себе: наприклад, "stop" не є анаграмою "stop".
Цільове слово та кандидати складаються з однієї або більше літер ASCII (A-Z та a-z).
Малі та великі літери рівнозначні: наприклад, "PoTS" є анаграмою "sTOp", але StoP не є анаграмою sTOp.
Набір анаграм - це підмножина набору кандидатів, які є анаграмами цільового слова (у будь-якому порядку).
Слова в наборі анаграм повинні мати той самий регістр літер, як і в наборі кандидатів.
Дано цільове слово "stone" та кандидатів "stone", "tones", "banana", "tons", "notes", "Seton"; набором анаграм є "tones", "notes", "Seton".
Анаграми потрібно повертати в тому самому порядку, у якому вони наведені серед слів-кандидатів.