if 1:
inf = float('inf')
import sys
input = lambda: sys.stdin.readline().strip()
I = lambda: input()
II = lambda: int(input())
IS = lambda: input().split()
MII = lambda: map(int, input().split())
LMII = lambda: list(map(int, input().split()))
L01 = lambda: list(int(x) for x in input())
LMZ = lambda A: list(map(list, zip(*A)))
from collections import deque,defaultdict,Counter
'''
【定义】折角为 01 或 10 的左边下标
按 k 次代表有 k - 1 个折角
维护一个 sliding window 保证里面有 k - 1 折角且左边和右边都恰好在一个折角右边第一个的元素上
找折角数为 k - 1 的子数组的个数
直接使用 sliding window 太繁琐,尝试hash+前缀和
'''
def Solve():
n,k = MII()
s = L01()
ans = 0
if k == 1:
l = r = 0
while l < n and r < n:
r = l
while r < n and s[r] == s[l]:
r += 1
ans += (r - l) * (r - l + 1) // 2
l = r
return print(ans)
A = [0] * (n - 1) # 折角数组
for i in range(n - 1):
if s[i] != s[i + 1]: A[i] = 1
pre = [0] * n
for i in range(n - 1):
pre[i+1] = pre[i] + A[i]
cnt = defaultdict(int)
cnt[pre[0]] = 1
for i in range(n - 1):
ans += cnt[pre[i + 1] - (k - 1)]
cnt[pre[i+1]] += 1
print(ans)
if __name__ == '__main__':
T = 1
# T = int(input())
for i in range(T):
Solve()