Codeforces Round 166 (Div. 2) |
---|
Закончено |
Вам дана строка s, состоящая из строчных латинских букв. Некоторые из латинских букв являются хорошими, остальные — плохими.
Подстрокой s[l...r] (1 ≤ l ≤ r ≤ |s|) строки s = s1s2...s|s| (где |s| — длина строки s) называется строка slsl + 1...sr.
Подстроку s[l...r] назовем хорошей, если среди букв sl, sl + 1, ..., sr не более k являются плохими (смотрите пояснения к примерам для лучшего понимания).
Ваша задача — найти количество различных хороших подстрок данной строки s. Две подстроки s[x...y] и s[p...q] различны, если различно их содержимое, то есть s[x...y] ≠ s[p...q].
Первая строка входных данных — это непустая строка s, состоящая из строчных латинских букв, длиной не более 1500 символов.
Вторая строка входных данных — это строка из символов «0» и «1» длиной ровно 26 символов. Если i-ый символ этой строки равен «1», то i-ая буква латинского алфавита является хорошей, иначе — плохой. То есть первый символ этой строки соответствует букве «a», второй — букве «b» и так далее.
В третьей строке входных данных записано единственное целое число k (0 ≤ k ≤ |s|) — максимальное допустимое количество плохих символов в хорошей подстроке.
Выведите единственное целое число — количество различных хороших подстрок строки s.
ababab
01000000000000000000000000
1
5
acbacbacaa
00000000000000000000000000
2
8
В первом примере хорошими подстроками являются: «a», «ab», «b», «ba», «bab».
Во втором примере хорошими подстроками являются: «a», «aa», «ac», «b», «ba», «c», «ca», «cb».
Название |
---|