#include <bits/stdc++.h>
const int maxn = 5e3 + 5;
char s[maxn], t[maxn];
int sl, tl, cnt[256];
bool NoBigger(int ch) {
  for (++ch; ch <= 'z'; ++ch)
    if (cnt[ch]) return false;
  return true;
}
char FirstBigger(int ch) {
  for (++ch; ch <= 'z'; ++ch) {
    if (cnt[ch]) {
      --cnt[ch];
      return ch;
    }
  }
}
bool Dfs(int k) {
  if (k == tl) {
    if (NoBigger(t[k]))
      return false;
    else {
      for (int i = 0; i < k; i++) putchar(s[i]);
      putchar(FirstBigger(t[k]));
      for (int i = 'a'; i <= 'z'; i++)
        while (cnt[i]--) putchar(i);
      exit(0);
    }
  }
  if (cnt[t[k]]) {
    s[k] = t[k];
    --cnt[s[k]];
    if (!Dfs(k + 1)) {
      ++cnt[s[k]];
      if (NoBigger(t[k]))
        return false;
      else {
        for (int i = 0; i < k; i++) putchar(s[i]);
        putchar(FirstBigger(t[k]));
        for (int i = 'a'; i <= 'z'; i++)
          while (cnt[i]--) putchar(i);
        exit(0);
      }
    }
  } else {
    if (NoBigger(t[k]))
      return false;
    else {
      for (int i = 0; i < k; i++) putchar(s[i]);
      putchar(FirstBigger(t[k]));
      for (int i = 'a'; i <= 'z'; i++)
        while (cnt[i]--) putchar(i);
      exit(0);
    }
  }
}
int main() {
  scanf("%s%s", s, t);
  sl = strlen(s), tl = strlen(t);
  for (int i = 0; i < sl; i++) ++cnt[s[i]];
  if (!Dfs(0)) printf("-1");
  return 0;
}
