#include <bits/stdc++.h>
using namespace std;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n, k;
  string s;
  cin >> n >> k;
  cin >> s;
  bool letters[26];
  memset(letters, 0, sizeof(letters));
  vector<char> v;
  for (int i = 0; i < n; i++) {
    if (!letters[s[i] - 'a']) {
      letters[s[i] - 'a'] = true;
      v.push_back(s[i]);
    }
  }
  sort(v.begin(), v.end());
  int sz = (int)v.size();
  string ans = "";
  if (k > n) {
    ans = ans + s;
    for (int i = 0; i < k - n; i++) ans = ans + v[0];
  } else if (k < n) {
    n = k;
    s = s.substr(0, k);
    int pos;
    int pos2;
    for (int i = n - 1; i >= 0; i--) {
      if (s[i] != v[sz - 1]) {
        pos = i;
        break;
      }
    }
    for (int i = 0; i < v.size(); i++) {
      if (v[i] > s[pos]) {
        pos2 = i;
        break;
      }
    }
    for (int i = 0; i < pos; i++) ans = ans + s[i];
    ans = ans + v[pos2];
    while (ans.length() < k) ans = ans + v[0];
  } else if (k == n) {
    int pos;
    int pos2;
    for (int i = n - 1; i >= 0; i--) {
      if (s[i] != v[sz - 1]) {
        pos = i;
        break;
      }
    }
    for (int i = 0; i < v.size(); i++) {
      if (v[i] > s[pos]) {
        pos2 = i;
        break;
      }
    }
    for (int i = 0; i < pos; i++) ans = ans + s[i];
    ans = ans + v[pos2];
    while (ans.length() < k) ans = ans + v[0];
  }
  cout << ans;
  return 0;
}
