#include <bits/stdc++.h>
using namespace std;
const int N = 5005;
int cnt[26];
char str[N];
string ret, tmp, pre;
string get(int x) {
  cnt[x]--;
  string r = "";
  r += 'a' + x;
  for (int i = 0; i < 26; i++) {
    for (int j = 0; j < cnt[i]; j++) r += 'a' + i;
  }
  cnt[x]++;
  return r;
}
int main() {
  int n, i, j, flag = 0;
  scanf("%s", str);
  for (i = 0; str[i]; i++) {
    cnt[str[i] - 'a']++;
  }
  scanf("%s", str);
  for (pre = "", i = 0; str[i]; i++) {
    int now = str[i] - 'a';
    for (j = now + 1; j < 26; j++) {
      if (cnt[j]) break;
    }
    if (j < 26) {
      tmp = pre + get(j);
      if (!flag || ret > tmp) ret = tmp;
      flag = 1;
    }
    if (!cnt[now]) break;
    cnt[now]--;
    pre += str[i];
  }
  if (!str[i]) {
    for (j = 0; j < 26; j++)
      if (cnt[j]) break;
    if (j < 26) {
      tmp = pre + get(j);
      if (!flag || ret > tmp) ret = tmp;
      flag = 1;
    }
  }
  if (!flag)
    puts("-1");
  else
    cout << ret << endl;
  return 0;
}
