#include <bits/stdc++.h>
using namespace std;
const long long int mod = 1e9 + 7;
int t[5555], a[5555], st[33];
char c[5555];
int main() {
#pragma comment(linker, "/STACK:268435456")
#pragma warning(disable : 4996)
  int i, j, n, x;
  bool k;
  gets(c);
  n = strlen(c);
  for (i = 0; i < 33; i++) {
    st[i] = 0;
  }
  for (i = 0; i < n; i++) {
    st[(int)(c[i] - 'a')]++;
  }
  gets(c);
  for (i = 0; i < strlen(c); i++) {
    t[i] = (int)(c[i] - 'a');
    a[i] = -1;
  }
  for (i = strlen(c); i < n; i++) {
    t[i] = -1;
    a[i] = -1;
  }
  k = true;
  for (i = 0; i < n && k; i++) {
    if (st[t[i]] > 0) {
      a[i] = t[i];
      st[t[i]]--;
    } else {
      x = i;
      k = false;
    }
  }
  if (k) {
    x = n - 1;
  }
  k = true;
  while (k && x >= 0) {
    if (a[x] != -1) {
      st[a[x]]++;
    }
    for (j = t[x] + 1; j < 33 && k; j++) {
      if (st[j] > 0) {
        k = false;
        a[x] = j;
        st[j]--;
      }
    }
    x--;
  }
  if (k) {
    printf("-1");
  } else {
    for (i = x + 2; i < n; i++) {
      k = true;
      for (j = 0; j < 33 && k; j++) {
        if (st[j] > 0) {
          a[i] = j;
          st[j]--;
          k = false;
        }
      }
    }
    for (i = 0; i < n; i++) {
      printf("%c", (char)(a[i] + 'a'));
    }
  }
  return 0;
}
