Вам задано рядок довжиною . Обробіть запитів наступних -х типів:
Змініть -й символ рядка (тобто s_i) на ;
Дайте відповідь на питання: скільки разів зустрічається як підрядок ?
Тобто, підрахуйте кількість індексів таких, що 1 \leq i \leq n - m + 1 та s_{i} s_{i + 1} \dots, s_{i + m - 1} = p_1 p_2 \dots p_m.
Знайдіть результат кожного запиту типу 2.
Перший рядок вхідних даних містить цілих числа (1 \leq n \leq 5\times 10^4, 1 \leq q \leq 10^5).
Другий рядок вхідних даних містить рядок довжини , що складається з малих латинських літер.
Далі йдуть рядків, які мають один із наступних форматів:
Якщо це запит першого типу, він містить ціле число k_i (1 \leq k_i \leq n) та символ нижнього регістру c_i. Цей запит означає заміну символу s_{k_i} на c_i
Якщо це запит другого типу, він містить число і непорожній рядок із символів нижнього регістру. Для цього типу запиту вам потрібно знайти скільки разів зустрічається як підрядок .
Гарантується, що існує принаймні один запит типу .
Гарантується, що сума довжин рядків за всіма запитами типу не перевищує 5\cdot 10^4.
Для кожної операції типу виведіть кількість входжень рядку запиту як підрядка .
Приклад 1
Приклад 2