MOD = 10**9 + 7

def solve():
    n, k = map(int, input().split())
    s = input().strip()
    
    dp = [[[0] * 2 for _ in range(k)] for _ in range(n + 1)]
    dp[0][0][1] = 1
    
    for pos in range(n):
        d = int(s[pos])
        for ones in range(k):
            for tight in range(2):
                cur = dp[pos][ones][tight]
                if cur == 0:
                    continue
                
                max_d = d if tight else 1
                
                dp[pos + 1][ones][tight and (0 == d)] = (dp[pos + 1][ones][tight and (0 == d)] + cur) % MOD
                
                if max_d >= 1:
                    nones = (ones + 1) % k
                    ntight = tight and (1 == d)
                    dp[pos + 1][nones][ntight] = (dp[pos + 1][nones][ntight] + cur) % MOD
    
    ans = (dp[n][0][0] + dp[n][0][1]) % MOD
    print(ans)

if __name__ == "__main__":
    solve()