#include <bits/stdc++.h>
using namespace std;
const int N = 5010;
char s[N], t[N], q[N];
int c[30], len, len2;
bool pd = true;
void aug(int x) {
  for (int i = 0; i < 26; i++) {
    while (c[i]) {
      c[i]--;
      q[x] = 'a' + i;
      x++;
    }
  }
  q[x] = '\0';
}
bool dfs(int x) {
  if (x == len2) {
    if (len2 == len) return false;
    aug(x);
    return true;
  } else {
    if (c[t[x] - 'a'] > 0) {
      c[t[x] - 'a']--;
      q[x] = t[x];
      if (dfs(x + 1))
        return true;
      else {
        bool pd = false;
        c[t[x] - 'a']++;
        for (int i = t[x] - 'a' + 1; i < 26; i++)
          if (c[i]) {
            c[i]--;
            q[x] = 'a' + i;
            pd = true;
            break;
          }
        if (pd) {
          aug(x + 1);
          return true;
        } else
          return false;
      }
    } else {
      bool pd = false;
      for (int i = t[x] - 'a' + 1; i < 26; i++)
        if (c[i]) {
          c[i]--;
          q[x] = 'a' + i;
          pd = true;
          break;
        }
      if (pd) {
        aug(x + 1);
        return true;
      } else
        return false;
    }
  }
}
int main() {
  scanf("%s", s);
  scanf("%s", t);
  len = strlen(s);
  len2 = strlen(t);
  for (int i = 0; i < len; i++) c[s[i] - 'a']++;
  pd = dfs(0);
  if (pd)
    printf("%s\n", q);
  else
    printf("-1\n");
  return 0;
}
