// Authored by Ibrahimfostok...
// Next level : "Master"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod = 998244353;
// const ll mod = 1e9 + 7;
#define gcd __gcd
#define int ll
#define ld long double
#define lcm(a, b) (a * b / gcd(a, b))
#define ceil(x, y) (((x) + (y) - 1ll) / (y))
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define pb push_back
#define MOD(x) x = ((x % mod) + mod) % mod
const long double pi = 3.14159265358979323846;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
ll rand(ll L, ll R)
{
return uniform_int_distribution<ll>(L, R)(rng);
}
//
void My_Solve(int TC)
{
// cout << setprecision(10) << fixed;
int n, k;
cin >> n >> k;
string s;
cin >> s;
int cnt = 0;
vector<int> a;
for (int i = 0; i < n; i++)
{
if (s[i] == '0')
{
if (cnt)
a.push_back(cnt), cnt = 0;
}
else
{
cnt++;
}
}
if (cnt)
a.push_back(cnt);
vector<int> pre(a.size() + 1);
for (int i = 0; i < a.size(); i++)
pre[i + 1] = pre[i] + a[i];
int ans = 0;
for (int i = 1; i <= a.size(); i++)
{
ans = max(ans, pre[min((int)a.size(), i + k)] - pre[i - 1]);
}
cout << ans << '\n';
}
int32_t main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
int t = 1;
cin >> t;
for (int i = 1; i <= t; i++)
My_Solve(i);
return 0;
}