#include <bits/stdc++.h>
using namespace std;
char s[5050], t[5050], goal[5050];
int cnt[200], l, l2;
bool dfs(int p, bool v) {
  if (p == l2) {
    if (v)
      return puts(goal), 1;
    else
      return 0;
  }
  if (v) {
    for (int i = 'a'; i < 'z' + 1; i++)
      if (cnt[i] > 0) {
        cnt[i] -= 1;
        goal[p] = i;
        return dfs(p + 1, v);
      }
    return 1;
  } else {
    for (int i = 'a'; i < 'z' + 1; i++)
      if (cnt[i] > 0 && i >= t[p]) {
        cnt[i] -= 1;
        goal[p] = i;
        if (dfs(p + 1, v | (i > t[p]))) return 1;
        cnt[i] += 1;
      }
  }
  return 0;
}
int main() {
  scanf("%s%s", s, t);
  l = strlen(t);
  l2 = strlen(s);
  for (int i = 0; i < l2; i++) cnt[s[i]]++;
  if (!dfs(0, 0)) puts("-1");
}
