#include <bits/stdc++.h>
using namespace std;
int num[30];
vector<char> ans;
int main() {
  string a, b;
  cin >> a >> b;
  int len = a.length();
  for (int i = 0; i < len; i++) {
    num[a[i] - 'a']++;
  }
  int flag = 0;
  for (int i = 0; i < b.length(); i++) {
    if (flag) break;
    if (num[b[i] - 'a']) {
      ans.push_back(b[i]);
      num[b[i] - 'a']--;
    } else {
      for (int j = (b[i] - 'a' + 1); j < 26; j++) {
        if (num[j]) {
          flag = 1;
          ans.push_back(j + 'a');
          num[j]--;
          flag = 1;
          break;
        }
      }
      while (flag == 0) {
        if (ans.empty()) {
          cout << -1 << '\n';
          return 0;
        }
        char t = ans.back();
        ans.pop_back();
        num[t - 'a']++;
        for (int j = t - 'a' + 1; j < 26; j++) {
          if (num[j]) {
            flag = 1;
            ans.push_back(j + 'a');
            num[j]--;
            flag = 1;
            break;
          }
        }
      }
    }
  }
  if (flag == 0 && a.length() == b.length()) {
    while (flag == 0) {
      if (ans.empty()) {
        cout << -1 << '\n';
        return 0;
      }
      char t = ans.back();
      ans.pop_back();
      num[t - 'a']++;
      for (int j = t - 'a' + 1; j < 26; j++) {
        if (num[j]) {
          flag = 1;
          ans.push_back(j + 'a');
          num[j]--;
          flag = 1;
          break;
        }
      }
    }
  }
  for (int i = 0; i < 26; i++) {
    while (num[i] > 0) {
      ans.push_back(i + 'a');
      num[i]--;
    }
  }
  for (int i = 0; i < ans.size(); i++) {
    cout << ans[i];
  }
  cout << '\n';
  return 0;
}
