#include <bits/stdc++.h>
using namespace std;
long long pre[1000013];
long long pre2[1000013];
long long p[1000013];
long long p2[1000013];
int bas[1000013];
const long long MOD = 1e9 + 7;
const long long P = 53;
const long long MOD2 = 1e7 + 3;
const long long P2 = 41;
long long add(long long a, long long b) {
  return ((a % MOD) + (b % MOD)) % MOD;
}
long long sub(long long a, long long b) {
  return ((a % MOD) + MOD - (b % MOD)) % MOD;
}
long long mul(long long a, long long b) {
  return ((a % MOD) * (b % MOD)) % MOD;
}
long long add2(long long a, long long b) {
  return ((a % MOD2) + (b % MOD2)) % MOD2;
}
long long sub2(long long a, long long b) {
  return ((a % MOD2) + MOD2 - (b % MOD2)) % MOD2;
}
long long mul2(long long a, long long b) {
  return ((a % MOD2) * (b % MOD2)) % MOD2;
}
int main() {
  p[0] = 1;
  p[1] = P;
  p2[0] = 1;
  p2[1] = P2;
  int maxi = 0;
  for (int i = 2; i <= 1000011; i++) {
    p[i] = mul(p[i - 1], P);
    p2[i] = mul2(p2[i - 1], P2);
  }
  int n, m;
  cin >> n >> m;
  string st;
  cin >> st;
  for (int i = 0; i < n; i++) {
    pre[i + 1] = add(0, st[i] - 'a' + 1);
    pre2[i + 1] = add2(0, st[i] - 'a' + 1);
  }
  for (int i = 2; i <= n; i++) {
    pre[i] = add(pre[i], mul(P, pre[i - 1]));
    pre2[i] = add2(pre2[i], mul2(P2, pre2[i - 1]));
  }
  for (int i = 1; i <= n; i++) {
    if (i % m == 0) {
      int k = i / m;
      long long h1 = sub(pre[i], mul(pre[k], p[i - k]));
      long long h2 = pre[i - k];
      long long h3 = sub2(pre2[i], mul2(pre2[k], p2[i - k]));
      long long h4 = pre2[i - k];
      if (h1 % MOD == h2 % MOD && h3 % MOD2 == h4 % MOD2) {
        bas[i] = 1;
        if (i > maxi) {
          maxi = i;
        }
        int ctr = maxi - i;
        while (st[ctr] == st[i + ctr] && ctr < k) {
          bas[i + ctr + 1] = 1;
          if (i + ctr + 1 > maxi) {
            maxi = i + ctr + 1;
          }
          ctr++;
        }
      }
      i += m;
      i--;
    }
  }
  for (int i = 1; i <= n; i++) {
    cout << bas[i];
  }
  return 0;
}
