#include <bits/stdc++.h>
using namespace std;
int a[10];
string s;
inline int digit(int n) {
  if (!n) return 0;
  int cnt = 0;
  while (n) {
    cnt++;
    n /= 10;
  }
  return cnt;
}
int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cin >> s;
  int n = (int)s.length();
  for (int i = 0; i < (n); i++) {
    a[s[i] - '0']++;
  }
  int d = 1;
  while (d < n - digit(d)) d++;
  int temp = d;
  while (temp) {
    a[temp % 10]--;
    temp /= 10;
  }
  string t;
  cin >> t;
  int lt = (int)t.length();
  for (int i = 0; i < (lt); i++) {
    a[t[i] - '0']--;
  }
  int fir = 0;
  for (int i = (1); i <= (9); i++) {
    if (a[i]) {
      fir = i;
      break;
    }
  }
  if (!fir) {
    cout << t;
    for (int i = 0; i < (a[0]); i++) cout << 0;
  } else {
    string ans;
    string s1, s2;
    a[fir]--;
    s1 += fir + '0';
    s2 += fir + '0';
    for (int i = (0); i <= (t[0] - '0'); i++) {
      for (int j = 0; j < (a[i]); j++) {
        s1 += i + '0';
      }
    }
    s1 += t;
    for (int i = (t[0] - '0' + 1); i <= (9); i++) {
      for (int j = 0; j < (a[i]); j++) {
        s1 += i + '0';
      }
    }
    for (int i = (0); i <= (t[0] - '0' - 1); i++) {
      for (int j = 0; j < (a[i]); j++) {
        s2 += i + '0';
      }
    }
    s2 += t;
    for (int i = (t[0] - '0'); i <= (9); i++) {
      for (int j = 0; j < (a[i]); j++) {
        s2 += i + '0';
      }
    }
    ans = min(s1, s2);
    if (t[0] != '0') {
      string s3;
      a[fir]++;
      s3 += t;
      for (int i = (0); i <= (9); i++) {
        for (int j = 0; j < (a[i]); j++) {
          s3 += i + '0';
        }
      }
      ans = min(ans, s3);
    }
    cout << ans;
  }
  cout << '\n';
}
