#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5005;
char s[MAXN], t[MAXN];
int n, m, fl, sum[30];
bool NO(int st) {
  for (int i = (25); i >= (0); i--)
    for (int j = (1); j <= (sum[i]); j++) {
      if (i + 'a' < t[st]) return 1;
      if (i + 'a' > t[st]) return 0;
      st++;
    }
  return n <= m;
}
int main() {
  scanf("%s", s + 1);
  n = strlen(s + 1);
  scanf("%s", t + 1);
  m = strlen(t + 1);
  for (int i = (1); i <= (n); i++) sum[s[i] - 'a']++;
  if (NO(1)) {
    printf("-1\n");
    return 0;
  }
  for (int i = (1); i <= (n); i++)
    if (!fl) {
      if (i > m) {
        fl = 1;
        break;
      }
      int x = t[i] - 'a';
      if (sum[x]) {
        sum[x]--;
        if (NO(i + 1))
          sum[x]++;
        else {
          printf("%c", x + 'a');
          continue;
        }
      }
      for (int k = (t[i] - 'a' + 1); k <= (25); k++)
        if (sum[k]) {
          sum[k]--;
          printf("%c", k + 'a');
          fl = 1;
          break;
        }
    }
  for (int k = (0); k <= (25); k++)
    for (int j = (1); j <= (sum[k]); j++) printf("%c", k + 'a');
  printf("\n");
  return 0;
}
