#include <bits/stdc++.h>
char s[5005], t[5005];
int len, cnt[128];
int greedy(int n) {
  int i, j;
  int _cnt[128];
  memcpy(_cnt, cnt, sizeof(cnt));
  for (i = n, j = 'z'; i < len; i++) {
    while (!_cnt[j]) j--;
    _cnt[s[i] = j]--;
  }
  return strcmp(s, t) > 0;
}
int main() {
  int i, j;
  scanf("%s%s", s, t);
  len = strlen(s);
  memset(cnt, 0, sizeof(cnt));
  for (i = 0; i < len; i++) cnt[s[i]]++;
  for (i = 0; i < len; i++) {
    for (j = 'a'; j <= 'z'; j++)
      if (cnt[j]) {
        cnt[s[i] = j]--;
        if (greedy(i + 1)) break;
        cnt[j]++;
      }
    if (j > 'z') {
      printf("-1\n");
      return 0;
    }
  }
  printf("%s\n", s);
  return 0;
}
