#include <bits/stdc++.h>
using namespace std;
char n1[5002], n2[5002];
int l1, l2;
stack<char> res;
bool tfind(int i) {
  if (i == l2) {
    if (l1 <= l2)
      return false;
    else
      return true;
  }
  int j;
  char c;
  for (j = 0; j < l1; j++) {
    if (n1[j] > n2[i]) {
      res.push(n1[j]);
      n1[j] = 0;
      return true;
    } else if (n1[j] == n2[i]) {
      c = n1[j];
      n1[j] = 0;
      if (tfind(i + 1)) {
        res.push(c);
        return true;
      }
      n1[j] = c;
    }
  }
  return false;
}
int main() {
  gets(n1);
  gets(n2);
  l1 = strlen(n1);
  l2 = strlen(n2);
  int i, j, c2;
  sort(n1, n1 + l1);
  if (tfind(0)) {
    while (!res.empty()) {
      putchar(res.top());
      res.pop();
    }
    for (i = 0; i < l1; i++)
      if (n1[i]) putchar(n1[i]);
  } else
    printf("-1\n");
}
