#include using namespace std; #define rep(i,n) for(int i=0; i<(n); ++i) #define st first #define nd second #define pb push_back #define mp make_pair typedef vector vi; typedef pair pii; typedef long long ll; const int maxn = 1005; char x[maxn]; int dp[maxn][maxn][2]; const int mod = 1000000007; void solve() { int n, k; scanf("%d %d", &n, &k); scanf(" %s", x); dp[n][0][0] = 1; int zap = 0; for(int i = n; i; i --){ for(int j = 0; j <= zap; j ++){ for(int k = 0; k < 2; k ++){ int a = (x[i - 1] == '1') + k; // nie zapalam tego bitu i - 1 dp[i - 1][j + a%2][a/2] += dp[i][j][k]; if(dp[i - 1][j + a%2][a/2] >= mod) dp[i - 1][j + a%2][a/2] -= mod; a ++; //zapalam bit i - 1 dp[i - 1][j + a%2][a/2] += dp[i][j][k]; if(dp[i - 1][j + a%2][a/2] >= mod) dp[i - 1][j + a%2][a/2] -= mod; } } zap ++; } printf("%d\n", (dp[0][k][0] + dp[0][k-1][1])%mod); } int main(){ solve(); return 0; }