#include <bits/stdc++.h>
using namespace std;
char s[5001];
char t[5001];
vector<char> r;
int num[256];
int n, m;
bool check(int k) {
  int x = 0;
  for (int i = t[k] + 1; i <= 'z'; i++)
    if (num[i] > 0) return 1;
  for (int i = 'a'; i <= 'z'; i++) {
    x += num[i];
  }
  if (k == m - 1) {
    if (x >= 2 && num[t[k]] > 0) return 1;
    return 0;
  }
  if (num[t[k]] == 0) return 0;
  num[t[k]]--;
  bool c = check(k + 1);
  num[t[k]]++;
  return c;
}
int main() {
  scanf("%s", &s);
  ;
  scanf("%s", &t);
  ;
  n = strlen(s);
  m = strlen(t);
  for (int i = 0; i < n; i++) num[s[i]]++;
  for (int i = 0; i < m; i++) {
    if (num[t[i]] > 0) {
      num[t[i]]--;
      if (check(i + 1)) {
        r.push_back(t[i]);
        continue;
      }
      num[t[i]]++;
    }
    for (int j = t[i] + 1; j <= 'z'; j++)
      if (num[j] > 0) {
        for (int k = 0; k < r.size(); k++) printf("%c", r[k]);
        printf("%c", j);
        num[j]--;
        for (int k = 'a'; k <= 'z'; k++) {
          for (int i = 0; i < num[k]; i++) printf("%c", k);
        }
        return 0;
      }
    cout << -1;
    return 0;
  }
  for (int k = 0; k < r.size(); k++) printf("%c", r[k]);
  for (int k = 'a'; k <= 'z'; k++) {
    for (int i = 0; i < num[k]; i++) printf("%c", k);
  }
  return 0;
}
