Олимпиадный тренинг

Задача . F. Запрещённые индексы


Дана строка s, состоящая из n строчных латинских букв. Некоторые индексы в этой строке являются запрещёнными.

Вам необходимо найти такую строку a, что значение |af(a) является максимально возможным, где f(a) — количество вхождений a в s, заканчивающихся в индексах, не являющихся запрещёнными. Например, если saaaa, aaa и индекс 3запрещённый, то f(a) = 2, так как a встречается в s три раза (начиная с индексов 1, 2 и 3), но одно из этих вхождений (то, которое начинается в индексе 2) заканчивается в запрещённом индексе.

Посчитайте максимально возможное значение |af(a).

Входные данные

В первой строке записано целое число n (1 ≤ n ≤ 200000) — длина строки s.

Во второй строке записана s — строка из n строчных латинских букв.

В третьей строке записана строка t, состоящая из n символов 0 и 1. Если i-й символ в t1, то i является запрещённым индексом (иначе i не запрещён).

Выходные данные

Выведите максимально возможное значение |af(a).


Примеры
Входные данныеВыходные данные
1 5
ababa
00100
5
2 5
ababa
00000
6
3 5
ababa
11111
0

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя