#include <bits/stdc++.h>
using namespace std;
int c[30], flag, len1, len2;
char s[5050], p[5050], ans[5050];
void back(int ind1, int ind2, int fl);
int main() {
  int i, j, k, l, test, t = 1;
  scanf("%s", s);
  len1 = strlen(s);
  scanf("%s", p);
  len2 = strlen(p);
  for (i = 0; s[i]; i++) {
    k = s[i] - 'a';
    c[k]++;
  }
  back(0, 0, 1);
  if (!flag) printf("-1\n");
  return 0;
}
void back(int ind1, int ind2, int fl) {
  if (!s[ind1]) {
    if (ind2 <= len2 && fl) return;
    flag = 1;
    ans[ind1] = '\0';
    printf("%s\n", ans);
    return;
  }
  int i, j, k, l;
  if (!fl) {
    for (i = 0; i < 26; i++) {
      if (c[i]) {
        ans[ind1] = i + 'a';
        c[i]--;
        back(ind1 + 1, ind2 + 1, fl);
        return;
      }
    }
  }
  if (fl) {
    if (ind2 >= len2) fl = 0;
    for (i = 0; i < 26; i++) {
      if (c[i] < 1) continue;
      if (fl) {
        if (i + 'a' < p[ind2]) continue;
        ans[ind1] = i + 'a';
        c[i]--;
        if (i + 'a' == p[ind2])
          l = 1;
        else
          l = 0;
        back(ind1 + 1, ind2 + 1, l);
        if (flag) return;
        c[i]++;
      }
      if (!fl) {
        ans[ind1] = i + 'a';
        c[i]--;
        back(ind1 + 1, ind2 + 1, fl);
        return;
      }
    }
  }
}
