eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Пошук шаблону

Пошук шаблону

Рядок складається з символів двох алфавітів \textbf{А_1} та \textbf{А_2}, які не перетинаються. Два рядки будуть рівними, якщо існує взаємно-однозначне відображення символів з алфавіту \textbf{А_1} у символи алфавіту \textbf{А_2}, після застосування якого до одного з рядків, рядки будуть співпадати. При такому визначенні рівності рядків будемо казати, що для заданого шаблону існує його входження у рядок, якщо у рядку знайдеться підрядок, рівний цьому шаблону. Для заданого рядка та шаблону необхідно порахувати кількість входжень цього шаблону у рядок. \InputFile У першому рядку вхідного файлу записано два цілих числа \textbf{N} та \textbf{M} --- кількість символів у першому та у другому алфавітах відповідно (\textbf{1} ≤ \textbf{N}, \textbf{M} < \textbf{52}). У наступних двох рядках записані без пропусків символи з алфавітів \textbf{A_1} та \textbf{A_2}. Символами з алфавітів можуть бути рядкові та прописні латинські літери. Четвертий рядок містить зажаний рядок, а п'ятий --- шаблон. Довжини рядка та шаблону не перевищують \textbf{10^5}. \OutputFile У вихідний файл необхідно вивести одне ціле число --- кількість входжень шаблону у рядок.
Ліміт часу 2 секунди
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
8 4
aIbctlyd
eouh
Itellyeh
you
Вихідні дані #1
1
Джерело Очний тур XIII Відкритої Всесибірської олімпіади з програмування імені І.В. Поттосіна