#include <bits/stdc++.h>
using namespace std;
int na, nb, k, c[99];
string a, b, s, mn = "a";
vector<string> v;
int f(int p) {
  int i;
  for (i = 0; p > 0; i++) {
    p /= 10;
  }
  return i;
}
void g(int p) {
  int i;
  string t1, t2;
  t1 = t2 = s;
  for (i = p; i < na && s[i] < b[0]; i++)
    ;
  t1.insert(i, b);
  for (; i < na && s[i] == b[0]; i++)
    ;
  t2.insert(i, b);
  v.push_back(t1);
  v.push_back(t2);
}
int main() {
  int i, j, t;
  cin >> a >> b;
  na = a.size();
  nb = b.size();
  for (i = 0; i < na; i++) c[a[i]]++;
  for (i = 0; i < nb; i++) c[b[i]]--;
  t = f(na);
  k = na - t;
  if (t != f(k)) k++;
  na -= nb;
  while (k > 0) {
    c[k % 10 + '0']--;
    na--;
    k /= 10;
  }
  for (i = '0'; i <= '9'; i++) {
    for (j = 0; j < c[i]; j++) {
      s += i;
    }
  }
  v.push_back(b + s);
  g(0);
  for (i = 0; i < na && s[i] == '0'; i++)
    ;
  if (i < na) {
    swap(s[0], s[i]);
    g(1);
  }
  for (i = 0; i < v.size(); i++) {
    if (v[i][0] != '0' || v[i] == "0") {
      mn = min(mn, v[i]);
    }
  }
  cout << mn;
  return 0;
}
