#include <bits/stdc++.h>
using namespace std;
string ans, a, b;
int freq[256];
bool pref(int k) {
  ans = "";
  fill(freq, freq + 256, 0);
  for (int i = 0; i < ((int)(a).size()); ++i) freq[a[i]]++;
  if (((int)(a).size()) < k + 1 || ((int)(b).size()) < k) return false;
  for (int i = 0; i < k; ++i) {
    if (!freq[b[i]])
      return false;
    else {
      ans += b[i];
      --freq[b[i]];
    }
  }
  if (((int)(b).size()) > k) {
    int i = b[k] + 1;
    while (i < 256 && !freq[i]) ++i;
    if (i == 256) {
      return false;
    }
    ans += (char)i;
    --freq[i];
  }
  for (int i = 0; i < 256; ++i)
    for (int j = 0; j < freq[i]; ++j) ans += (char)i;
  assert(ans > b);
  return true;
}
void testCase() {
  if (!(cin >> a >> b)) {
    exit(0);
  }
  for (int k = ((int)(a).size()); k >= 0; --k)
    if (pref(k)) {
      printf("%s\n", ans.c_str());
      return;
    }
  printf("-1\n");
}
int main() {
  while (true) {
    testCase();
  }
  return 0;
}
