#include <bits/stdc++.h>
using namespace std;
char s1[5010], s2[5010], str[5010];
int num[30];
int len1, len2;
int dfs(int k, int m) {
  if (!s1[k]) return m;
  for (int i = 0; i < 26; i++)
    if (num[i] && (m || (i >= s2[k] - 'a'))) {
      str[k] = i + 'a';
      num[i]--;
      if (dfs(k + 1, m || (i > s2[k] - 'a'))) return 1;
      num[i]++;
    }
  return 0;
}
int main() {
  while (EOF != scanf("%s %s", s1, s2)) {
    memset(num, 0, sizeof(num));
    len1 = strlen(s1), len2 = strlen(s2);
    for (int i = 0; i < len1; i++) num[s1[i] - 'a']++;
    if (!dfs(0, 0))
      printf("-1\n");
    else {
      printf("%s\n", str);
    }
  }
  return 0;
}
