#include <bits/stdc++.h>
using namespace std;
int cnt[27];
char A[5002], B[5002];
int n, m, i, Tmp;
bool solve(int k, int Len1, int Len2) {
  int i;
  if (k >= Len1) return false;
  if (k >= Len2) return true;
  char tt;
  if (cnt[B[k] - 'a'] > 0) {
    cnt[B[k] - 'a']--;
    tt = A[k];
    A[k] = B[k];
    if (solve(k + 1, Len1, Len2)) return true;
    cnt[B[k] - 'a']++;
    A[k] = tt;
  }
  for (i = B[k] - 'a' + 1; i < 26; i++)
    if (cnt[i] > 0) {
      A[k] = 'a' + i;
      cnt[i]--;
      return true;
    }
  return false;
}
int main() {
  cin >> A >> B;
  n = strlen(A);
  m = strlen(B);
  for (i = 0; i < n; ++i) cnt[A[i] - 'a']++;
  if (solve(0, n, m)) {
    Tmp = n - 1;
    for (i = 25; i >= 0; --i) {
      while (cnt[i] > 0) {
        A[Tmp] = 'a' + i;
        cnt[i]--;
        Tmp--;
      }
    }
    printf("%s\n", A);
    return 0;
  }
  printf("-1\n");
}
