#include <bits/stdc++.h>
using namespace std;
string a, b, r;
int cnta[26], cntr[26];
void dfs(int k) {
  for (int i = 0; i < 26; i++)
    if (cnta[i] > 0 && 'a' + i > b[k]) {
      r.assign(b, 0, k);
      r.push_back('a' + i);
      cnta[i]--;
      memcpy(cntr, cnta, sizeof(cnta));
      cnta[i]++;
      break;
    }
  if (cnta[b[k] - 'a'] > 0) {
    cnta[b[k] - 'a']--;
    dfs(k + 1);
  }
}
int main() {
  cin >> a >> b;
  for (int i = 0; i < a.size(); i++) cnta[a[i] - 'a']++;
  dfs(0);
  if (r.size()) {
    for (int i = 0; i < 26; i++)
      while (cntr[i]-- > 0) r.push_back('a' + i);
    cout << r << endl;
  } else
    cout << -1 << endl;
  return 0;
}
