// Bismillahir Rahmanir Raheem
/* contest time
1. No use of mobile (must);
2. Think about problem not solution.
3. Find full solution
4. try to proof or find cases
5. write down solution
6. then code
practice time
1. think for straigt half an hour .
2. try to learn
3. dont make the solve count
4. make the learn count
*/
// READ PROBLEM AGAIN Andddd AGAIN.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define nl "\n"
#define faster ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
void solve(int t_case)
{
int n, k;
cin >> n >> k;
string s;
cin >> s;
vector<int> v;
char cur = s[0];
int cnt = 1;
for (int i = 1; i < n; i++) {
if (s[i] == cur) {
cnt++;
} else {
if (cur == '1') {
v.push_back(cnt);
}
cur = s[i];
cnt = 1;
}
}
if (cur == '1') {
v.push_back(cnt);
}
if (v.empty()) {
cout << 0 << nl;
return;
}
int total_one = 0;
for (int x : v) {
total_one += x;
}
int m = v.size();
int win_size = min(k + 1, m);
if (win_size >= m) {
cout << total_one << nl;
return;
}
int cur_sum = 0;
for (int i = 0; i < win_size; i++) {
cur_sum += v[i];
}
int max_sum = cur_sum;
for (int i = win_size; i < m; i++) {
cur_sum += v[i] - v[i - win_size];
max_sum = max(max_sum, cur_sum);
}
cout << max_sum << nl;
}
int32_t main()
{
faster;
int t;
cin >> t;
for (int i = 1; i <= t; i++)
solve(i);
return 0;
}