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()