typedef long long ll; typedef long double ld; #include using namespace std; // #define int long long #include using namespace __gnu_pbds; template using ordered_set = tree, rb_tree_tag, tree_order_statistics_node_update>; // std::cout << *s.find_by_order(1) << std::endl; // 2 signed main(){ // これがないと落ちることがある ios_base::sync_with_stdio(false); cin.tie(0); ll n,k; cin >> n>>k; string s; cin >> s; ll atari = 0; for (auto e : s) { atari += e-'0'; } if(atari>=n){ ll cnt = 0; ll ata = 0; for (ll i = 0; i < n; i++){ if(i==k)break; if(s[i]=='0'){ if(ata>0){ ata--; }else{ cnt++; } }else if(s[i]=='1'){ if(ata>0){ }else{ cnt++; ata++; } }else{ if(ata>0){ ata++; }else{ cnt++; ata+=2; } } } cout << cnt << endl; }else{ ll cnt = 0; ll ata = 0; bool ok = false; for (ll i = 0; i < n; i++){ if(i==k){ok=true;break;} if(s[i]=='0'){ if(ata>0){ ata--; }else{ cnt++; } }else if(s[i]=='1'){ if(ata>0){ }else{ cnt++; ata++; } }else{ if(ata>0){ ata++; }else{ cnt++; ata+=2; } } } if(ok){ cout << cnt << endl; return 0; } ll orc = cnt; k-=n; for (ll i = 0; i < n; i++){ if(i==k){ok=true;break;} if(s[i]=='0'){ if(ata>0){ ata--; }else{ cnt++; } }else if(s[i]=='1'){ if(ata>0){ }else{ cnt++; ata++; } }else{ if(ata>0){ ata++; }else{ cnt++; ata+=2; } } } if(ok){ cout << cnt << endl; return 0; } k-=n; // n進めるのにorc-cntコスト cnt += (cnt-orc)*((k)/n); k%=n; for (ll i = 0; i < n; i++){ if(i==k){ok=true;break;} if(s[i]=='0'){ if(ata>0){ ata--; }else{ cnt++; } }else if(s[i]=='1'){ if(ata>0){ }else{ cnt++; ata++; } }else{ if(ata>0){ ata++; }else{ cnt++; ata+=2; } } } cout << cnt << endl; } }