#include <bits/stdc++.h>
using namespace std;
int n, m;
string s, t;
vector<char> vv;
int main() {
  cin >> n >> m;
  cin >> s;
  for (int i = 0; i < n; i++) vv.push_back(s[i]);
  sort(vv.begin(), vv.end());
  if (((int)(s).size()) < m) {
    t = s;
    for (int i = ((int)(s).size()); i < m; i++) t += vv[0];
    cout << t << endl;
    return 0;
  } else if (((int)(s).size()) == m) {
    t = s;
    int k = 1;
    while (1) {
      if (s[((int)(s).size()) - k] == vv[((int)(vv).size()) - 1]) {
        t[((int)(s).size()) - k] = vv[0];
        k++;
        continue;
      }
      int bb = upper_bound((vv).begin(), (vv).end(), t[((int)(s).size()) - k]) -
               vv.begin();
      t[((int)(s).size()) - k] = vv[bb];
      break;
    }
    cout << t << endl;
    return 0;
  } else {
    t = s.substr(0, m);
    int k = 1;
    while (1) {
      if (s[m - k] == vv[((int)(vv).size()) - 1]) {
        t[m - k] = vv[0];
        k++;
        continue;
      }
      int bb = upper_bound((vv).begin(), (vv).end(), t[m - k]) - vv.begin();
      t[m - k] = vv[bb];
      break;
    }
    cout << t << endl;
    return 0;
  }
}
