#include <bits/stdc++.h>
using namespace std;
using namespace std;
int cnt[26];
int cnt1[26];
int main() {
  string s;
  string t;
  cin >> s;
  cin >> t;
  for (int i = 0; i < s.size(); i++) {
    cnt[s[i] - 'a']++;
  }
  for (int i = 0; i < t.size(); i++) {
    cnt1[t[i] - 'a']++;
  }
  string ans;
  int gr = 0;
  for (int itr = 0; itr < s.size(); itr++) {
    int yes = 0;
    for (int i = 0; i < 26; i++) {
      if (cnt[i] == 0) continue;
      if (gr == 1) {
        cnt[i]--;
        ans.push_back(i + 'a');
        yes = 1;
        break;
      }
      if (itr >= t.size() || t[itr] < (i + 'a')) {
        cnt[i]--;
        ans.push_back(i + 'a');
        yes = 1;
        gr = 1;
        break;
      }
      if (itr < t.size() && t[itr] > (i + 'a')) continue;
      cnt[i]--;
      int idx = itr + 1;
      int flag = 0;
      for (int i1 = 25; i1 >= 0; i1--) {
        for (int j = 0; j < cnt[i1]; j++) {
          if (idx >= t.size()) {
            flag = 1;
            break;
          }
          if (t[idx] > (i1 + 'a')) {
            flag = 2;
            break;
          }
          if ((i1 + 'a') > t[idx]) {
            flag = 1;
            break;
          }
          if (flag) break;
          idx++;
        }
        if (flag) break;
      }
      if (flag == 1) {
        ans.push_back(i + 'a');
        yes = 1;
        break;
      } else {
        cnt[i]++;
      }
    }
    if (yes == 0) {
      printf("-1\n");
      return 0;
    }
  }
  if (ans < t) {
    printf("-1\n");
    return 0;
  }
  cout << ans << endl;
}
