#include using namespace std; typedef long long ll; typedef long double ld; #define rep(i,a,n) for (int i = (a); i < (n); i++) #define per(i,a,n) for (int i = (n) - 1; i >= (a); i--) const ll MOD = 1e9 + 7; const int N = 2018; ll nck[N][N]; void add(ll& a, ll b) { a = (a + b) % MOD; } int main(void) { ios_base::sync_with_stdio(false); int n, k; cin >> n >> k; string s; cin >> s; nck[0][0] = 1; rep(i,0,N-1) rep(j,0,N-1) { add(nck[i+1][j], nck[i][j]); add(nck[i+1][j+1], nck[i][j]); } //vector a(n + 1); //rep(i,0,n) a[i+1] = s[i] == '1'; vector a(n); rep(i,0,n) a[i] = s[i] == '1'; n = a.size(); // rep(i,0,a.size()) cout << a[i]; ll res = 0; rep(i,0,n) { if (a[i]) { if (k >= 1) { // cout << "x" << i << " " << nck[n-i-1][k-1] << endl; add(res, nck[n-i-1][k-1]); } k--; } else { if (k >= 1) { // cout << i << " " << nck[n-i-1][k] << endl; add(res, nck[n-i-1][k-1]); } } } if (k == 0) add(res, 1); cout << res << endl; }