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

Задача . C. Казак Вус и строки


У Казака Вуса есть две бинарные строки, то есть строки, которые состоят только из «0» и «1». Назовем эти строки \(a\) и \(b\). Известно, что \(|b| \leq |a|\), то есть длина \(b\) не более \(a\).

Казак рассматривает каждую подстроку длины \(|b|\) строки \(a\). Назовем эту подстроку \(c\). Он сопоставляет соответствующие символы в \(b\) и \(c\), после чего считает количество позиций, где эти две строки различны. Назовем эту функцию \(f(b, c)\).

Например, пусть \(b = 00110\), а \(c = 11000\). В этих строках первая, вторая, третья и четвертая позиции различны.

Казак Вус считает количество таких подстрок \(c\), что \(f(b, c)\) — четное.

Например, пусть \(a = 01100010\), а \(b = 00110\). У \(a\) есть четыре подстроки длины \(|b|\): \(01100\), \(11000\), \(10001\), \(00010\).

  • \(f(00110, 01100) = 2\);
  • \(f(00110, 11000) = 4\);
  • \(f(00110, 10001) = 4\);
  • \(f(00110, 00010) = 1\).

Поскольку в трех подстроках \(f(b, c)\) четное, то ответ — \(3\).

Вус не умеет находить ответ для больших строк, поэтому просит вас помочь ему в этом.

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

Первая строка содержит бинарную строку \(a\) (\(1 \leq |a| \leq 10^6\)) — первая строка.

Вторая строка содержит бинарную строку \(b\) (\(1 \leq |b| \leq |a|\)) — вторая строка.

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

Выведите одно целое число — ответ на задачу.

Примечание

Первый пример объяснен в легенде.

Во втором примере подходят подстроки \(1010\), \(0101\), \(1111\), \(1111\).


Примеры
Входные данныеВыходные данные
1 01100010
00110
3
2 1010111110
0110
4

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

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