#include <bits/stdc++.h>
using namespace std;
int z[2 * 1000 * 1000 + 10];
char s[2 * 1000 * 1000 + 10];
bool T[2 * 1000 * 1000 + 10];
int cnt[2 * 1000 * 1000 + 10];
int main() {
  int K, L;
  scanf("%d%d", &L, &K);
  scanf("%s", &s);
  for (int i = 1, l = 0, r = 0; i < L; ++i) {
    if (i <= r) z[i] = min(r - i + 1, z[i - l]);
    while (i + z[i] < L && s[z[i]] == s[i + z[i]]) ++z[i];
    if (i + z[i] - 1 > r) l = i, r = i + z[i] - 1;
  }
  int k, m;
  for (int i = 1; i < L; i++) {
    k = z[i] / i + 1;
    m = z[i] % (i);
    if (k == K) {
      T[i * K - 1] = true;
      cnt[i * K - 1] = max(cnt[i * K - 1], m);
    }
    if (k > K) {
      T[i * K - 1] = true;
      cnt[i * K - 1] = max(cnt[i * K - 1], i);
    }
    if (k >= K + 1) T[i * (K + 1) - 1] = true;
  }
  for (int i = 0; i < L; i++) {
    if (K == 1) T[i] = true;
    if (cnt[i]) {
      T[i + 1] = true;
      cnt[i + 1] = max(cnt[i + 1], cnt[i] - 1);
    }
    printf("%d", T[i]);
  }
  printf("\n");
  return 0;
}
