#include <bits/stdc++.h>
#pragma GCC target("pclmul")
using ul = std::uint32_t;
using ull = std::uint64_t;
using li = std::int32_t;
using ll = std::int64_t;
using llf = long double;
using uss = std::uint8_t;
ul n, m;
ull k;
const ul maxn = 1000;
const ul maxm = 1000;
char s[maxn + 2];
ul tim;
ul to[(maxn * (maxn + 1) >> 1) + 2][26];
ul pos[(maxn * (maxn + 1) >> 1) + 2];
ul len[(maxn * (maxn + 1) >> 1) + 2];
ul ord[(maxn * (maxn + 1) >> 1) + 2];
void search(ul curr) {
  ++tim;
  ord[tim] = curr;
  for (ul c = 0; c <= 25; ++c) {
    if (to[curr][c]) {
      search(to[curr][c]);
    }
  }
}
ull ans[maxn + 1][maxm + 1];
ull sum[maxn + 2][maxm + 1];
ull plus(ull a, ull b) { return a + b < k ? a + b : k; }
ull calc(ul id) {
  ul l = pos[id];
  ul r = pos[id] + len[id] - 1;
  sum[n + 1][0] = 1;
  for (ul i = n; i >= 1; --i) {
    ul al = i + r - l + 2;
    for (ul j = 1; j <= r - l + 1 && j <= n - i + 1; ++j) {
      if (s[i + j - 1] < s[l + j - 1]) {
        al = n + 2;
        break;
      } else if (s[i + j - 1] > s[l + j - 1]) {
        al = i + j;
        break;
      }
    }
    if (al <= n + 1) {
      for (ul j = std::min(m, n - i + 1); j >= 1; --j) {
        ans[i][j] = sum[al][j - 1];
      }
    } else {
      std::memset(ans[i] + 1, 0, sizeof(ull) * (std::min(m, n - i + 1)));
    }
    for (ul j = std::min(m, n - i + 1); ~j; --j) {
      sum[i][j] = plus(sum[i + 1][j], ans[i][j]);
    }
  }
  return ans[1][m];
}
int main() {
  std::scanf("%u%u%llu%s", &n, &m, &k, s + 1);
  tim = 1;
  pos[1] = n + 1;
  for (ul it = n; it >= 1; --it) {
    ul curr = 1;
    for (ul i = it; i <= n; ++i) {
      if (!to[curr][s[i] - 'a']) {
        ++tim;
        to[curr][s[i] - 'a'] = tim;
        pos[tim] = it;
        len[tim] = len[curr] + 1;
      }
      curr = to[curr][s[i] - 'a'];
    }
  }
  tim = 0;
  search(1);
  ul l = 0, r = tim;
  while (l + 1 != r) {
    ul mid = l + r >> 1;
    ul id = ord[mid];
    if (calc(id) < k) {
      r = mid;
    } else {
      l = mid;
    }
  }
  ul id = ord[r];
  l = pos[id];
  r = l + len[id] - 1;
  for (ul i = l; i <= r; ++i) {
    std::putchar(s[i]);
  }
  std::putchar('\n');
  return 0;
}
