#include using namespace std; #define MP make_pair #define ff first #define ss second long long prv=1000000007; int main() { int n,k; cin>>n>>k; string s; cin>>s; s = string(s.rbegin(),s.rend()); vector>>V(n+47,vector>(n+47,MP(0,0))); V[0][1]=MP(1,0); for(int i=1; i<=n; i++){ for(int j=1; j<=k+1; j++){ if(s[i-1]=='1'){ //neprenasam V[i][j].ff = V[i-1][j-1].ff; // prenasam V[i][j].ss = V[i-1][j].ss +V[i-1][j-1].ss + V[i-1][j].ff; } else{ V[i][j].ff = V[i-1][j-1].ss + V[i-1][j-1].ff + V[i-1][j].ff; V[i][j].ss = V[i-1][j].ss; } V[i][j].ff%=prv; V[i][j].ss%=prv; } } cout<<(V[n][k+1].ff+V[n][k].ss)%prv<