#include <bits/stdc++.h>
using namespace std;
template <class T>
T abs(T x) {
  return x > 0 ? x : -x;
}
int k;
int n;
char s[1000500];
long long q0 = 239, r0;
long long mod = 1500000001;
long long q[1000500], r[1000500];
long long st(long long x, long long p) {
  long long ans = 1;
  while (p) {
    if (p & 1) ans = ans * x % mod;
    x = x * x % mod;
    p /= 2;
  }
  return ans;
}
long long h[1000500];
void build() {
  r0 = st(q0, mod - 2);
  q[0] = r[0] = 1;
  for (int i = 1; i <= n; i++) {
    q[i] = q[i - 1] * q0 % mod;
    r[i] = r[i - 1] * r0 % mod;
  }
  long long hh = 0;
  for (int i = 0; i < (n); i++) {
    hh = (hh * q0 + s[i]) % mod;
    h[i] = hh;
  }
}
long long get(int l, int r) {
  long long ans = h[r];
  if (l > 0) {
    ans = ans - (h[l - 1] * q[r - l + 1] % mod);
    if (ans < 0) ans += mod;
  }
  return ans;
}
vector<pair<int, int> > v;
int ans[1000500];
int main() {
  cin >> n >> k;
  if (k == 1) {
    for (int i = 0; i < (n); i++) printf("1");
    cout << endl;
    return 0;
  }
  gets(s);
  gets(s);
  build();
  for (int d = 1; d <= n; d++) {
    if (d * k > n) break;
    long long ch = get(0, d - 1);
    int f = 1;
    for (int i = 1; i < k; i++) {
      long long tmp = get(i * d, i * d + d - 1);
      if (tmp != ch) {
        f = 0;
        break;
      }
    }
    if (!f) continue;
    int l = 1, r = d;
    int cc = 0;
    int p = d * k;
    while (l <= r) {
      int c = (l + r) / 2;
      if (p + c - 1 >= n) {
        r = c - 1;
        continue;
      }
      long long h1 = get(p, p + c - 1);
      long long h2 = h[c - 1];
      if (h1 != h2) {
        r = c - 1;
      } else {
        cc = c;
        l = c + 1;
      }
    }
    v.push_back(make_pair(p - 1, p + cc - 1));
  }
  sort((v).begin(), (v).end());
  if (((int)(v).size())) {
    int cl = v[0].first;
    int cr = v[0].second;
    for (int i = 0; i < (((int)(v).size()) + 1); i++) {
      if (i == ((int)(v).size()) || v[i].first > cr + 1) {
        for (int j = cl; j <= cr; j++) ans[j] = 1;
        cl = v[i].first;
        cr = v[i].second;
      } else {
        cr = max(cr, v[i].second);
      }
    }
  }
  for (int i = 0; i < (n); i++) cout << ans[i];
  cout << endl;
  return 0;
}
