#include <bits/stdc++.h>
int st[10];
char str[1000001];
bool prednost;
int velikost() {
  int x = 0;
  for (int i = 0; i < 10; i++) x += st[i];
  int a = 10;
  x--;
  while (x >= a) {
    a *= 10;
    x--;
  }
  return x;
}
void input() {
  for (int i = 0; i < 10; i++) st[i] = 0;
  char c = '1';
  while (isdigit(c)) {
    scanf("%c", &c);
    switch (c) {
      case '0':
        st[0]++;
        break;
      case '1':
        st[1]++;
        break;
      case '2':
        st[2]++;
        break;
      case '3':
        st[3]++;
        break;
      case '4':
        st[4]++;
        break;
      case '5':
        st[5]++;
        break;
      case '6':
        st[6]++;
        break;
      case '7':
        st[7]++;
        break;
      case '8':
        st[8]++;
        break;
      case '9':
        st[9]++;
        break;
    }
  }
  gets(str);
  while (!isdigit(str[0])) {
    gets(str);
  }
  return;
}
void f1(int d) {
  while (d > 0) {
    st[d % 10]--;
    d /= 10;
  }
  int i = 0;
  while (str[i] != '\0') {
    st[str[i] - 48]--;
    i++;
  }
  i = 1;
  while (str[i] != '\0') {
    if (str[i] > str[0]) {
      prednost = false;
      break;
    } else if (str[i] < str[0]) {
      prednost = true;
      break;
    }
    i++;
  }
  return;
}
int prva() {
  for (int i = 1; i < 10; i++)
    if (st[i] > 0) return i;
  return -2000;
}
bool First() {
  if (str[0] == '0') {
    return false;
  }
  int x = prva();
  if (x < 0) return true;
  x += 48;
  st[x]--;
  int poz = 1;
  if (str[0] > x) {
    st[x]++;
    return false;
  } else if (str[0] < x) {
    st[x]++;
    return true;
  }
  for (int i = 0; i < 10; i++) {
    for (int y = 0; y < st[i]; y++) {
      if (str[poz] > i + 48) {
        st[x]++;
        return false;
      } else if (str[poz] < i - 48) {
        st[x]++;
        return true;
      }
      poz++;
    }
  }
  return true;
}
void izpis() {
  int x = prva();
  if (x > 0) printf("%i", x);
  st[x]--;
  for (int i = 0; i < 10; i++) {
    if (str[0] == i + 48 && prednost == true) {
      printf("%s", str);
    }
    for (int y = 0; y < st[i]; y++) {
      printf("%i", i);
    }
    if (str[0] == i + 48 && prednost == false) {
      printf("%s", str);
    }
  }
  return;
}
void izpis1() {
  for (int i = 0; i < 10; i++)
    for (int y = 0; y < st[i]; y++) printf("%i", i);
  return;
}
int main() {
  int d;
  input();
  d = velikost();
  f1(d);
  if (First() == true) {
    printf("%s", str);
    izpis1();
  } else
    izpis();
  return 0;
}
