13059. HEX-Hell і зламаний рядок
Сергій втратив місце, де в редакторі шістнадцяткових кодів HEX-Hell знаходився його рядок. І, оскільки він великий молодець, самий рядок він зламав.
Нагадуємо, що один байт - дві шістнадцяткових цифри з діапазону \({[0-9A-F]}\). Послідовність кодів у редакторі в даний момент має довжину не більше \(125 \, 000\) байт (тобто в ній не більше \(250 \, 000\) символів, і вона має парну довжину).
А також, у Вас є Сергіїв бітовий рядок з нулів та одиниць, <<зламаний>> в деяких місцях (деякі біти будуть замінені на знаки \({?}\)).
Будь-ласка, для кожного можливого початку цього рядка в редакторі виведіть кількість нулів і одиниць, що збігаються. При цьому можна вважати, що знаки питання збігаються із чим завгодно! За цією інформацією, горе-Сергій розбереться зі своїми рядками сам. Тільки знайдіть кількість збігів!
Примітка
B2D6 у двійковому вигляді це \(10110010\,11010110\)
При прикладанні шаблону до першого байта отримуємо вісім збігів, а до другого - п'ять.
Формат вхідних даних
У вхідному файлі два непорожні рядки. Перший складається із символів від 0 до 9 і від A до F. Кількість таких символів парна і трохи більше \(250\,000\).
Другий рядок складається з нулів, одиниць та знаків питання. Його довжина кратна восьми (вона теж задає послідовність байт) і поміщається у чотирьох довжинах першого рядка (вона міститься у редактор).
Формат вихідних даних
Якщо довжина (у символах) першого рядка \(n\), а другого \(k\), то Вам необхідно вивести в першому рядку вихідного файлу \(n/2 - k/8 + 1\) цілих чисел - кількість біт, що збігаються, при прикладанні другого рядки до деякого місця першого рядка.
Прикладання впорядковані природним чином - зліва направо.
Приклад вхідних даних
B2D6
1011?010
Приклад вихідних даних
8 5
Коментарі