#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll mx = 1LL << 60;
string s;
ll n, m, k;
bool count(string key, ll k) {
  vector<vector<ll>> inc(n + 1);
  for (ll i = 0; i <= n; i++) {
    for (ll j = i + 1; j <= n; j++) {
      if (s.substr(i, j - i) >= key) {
        inc[j].push_back(i);
        break;
      }
    }
  }
  vector<vector<ll>> dp(n + 1, vector<ll>(m + 1, 0));
  dp[0][0] = 1;
  for (ll j = 1; j <= m; j++) {
    ll sum = 0;
    for (ll i = 1; i <= n; i++) {
      for (ll x : inc[i]) {
        sum = min(sum + dp[x][j - 1], mx);
      }
      dp[i][j] = min(dp[i][j] + sum, mx);
    }
  }
  return dp[n][m] < k;
}
int main() {
  cin >> n >> m >> k >> s;
  set<string> sub;
  for (ll i = 0; i < n; i++) {
    for (ll j = 1; j <= n - i; j++) {
      sub.insert(s.substr(i, j));
    }
  }
  vector<string> data(sub.rbegin(), sub.rend());
  ll index = -1;
  ll jump = 1 << 19;
  while (jump > 0) {
    if (index + jump < data.size() && count(data[index + jump], k)) {
      index += jump;
    }
    jump /= 2;
  }
  cout << data[index + 1] << endl;
}
