#include <bits/stdc++.h>
using namespace std;
const long long maxn = 123;
long long a[maxn], b[maxn], n, m;
char s[maxn];
long long vis[20], t[20], sb[maxn];
void dfs(long long stp, long long sa) {
  if (sa > sb[stp + 1]) return;
  if (stp == 0) {
    cout << sa << endl;
    exit(0);
  }
  if (stp > n) {
    dfs(stp - 1, sa);
    return;
  }
  for (long long i = 9; i >= 0; i--)
    if (vis[i] && sa * 10 + i <= sb[stp]) {
      --vis[i];
      dfs(stp - 1, sa * 10 + i);
      ++vis[i];
    }
}
int main() {
  long long i;
  scanf("%s", s + 1);
  n = strlen(s + 1);
  for (i = 1; i <= n; i++) a[i] = s[n - i + 1] - '0';
  scanf("%s", s + 1);
  m = strlen(s + 1);
  for (i = 1; i <= m; i++) b[i] = s[m - i + 1] - '0';
  for (i = m; i; i--) sb[i] = sb[i + 1] * 10 + b[i];
  for (i = 1; i <= n; i++) ++vis[a[i]];
  dfs(m, 0);
  return 0;
}
