#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:640000000")
using namespace std;
string s, t, best_ans = "", cur_pref = "";
int let[256];
string get(int N) {
  string answer = "";
  for (int i = 'a'; i <= 'z'; i++)
    if (let[i] && i > t[N]) {
      answer += i;
      break;
    };
  if (!answer.size()) return answer;
  for (int i = 'a'; i <= 'z'; i++)
    for (int j = 1; j <= let[i] - (i == answer[0]); j++) answer += i;
  return answer;
};
int main() {
  cin >> s >> t;
  for (int i = 0; i < s.size(); i++) ++let[s[i]];
  while (t.size() < s.size()) t += ' ';
  for (int i = 0; i < (int)min(t.size(), s.size()); i++) {
    string cur_suf = get(i);
    if (cur_suf.size()) {
      if (!best_ans.size()) best_ans = cur_pref + cur_suf;
      if (best_ans > cur_pref + cur_suf) best_ans = cur_pref + cur_suf;
    };
    if (let[t[i]])
      cur_pref += t[i];
    else
      break;
    --let[t[i]];
  };
  if (!best_ans.size())
    cout << -1 << '\n';
  else
    cout << best_ans << '\n';
  return 0;
}
