#include <bits/stdc++.h>
using namespace std;
const int N = 1e6;
int readInt() {
  bool minus = false;
  int result = 0;
  char ch;
  ch = getchar();
  while (true) {
    if (ch == '-') break;
    if (ch >= '0' && ch <= '9') break;
    ch = getchar();
  }
  if (ch == '-')
    minus = true;
  else
    result = ch - '0';
  while (true) {
    ch = getchar();
    if (ch < '0' || ch > '9') break;
    result = result * 10 + (ch - '0');
  }
  if (minus)
    return -result;
  else
    return result;
}
char s[N], t[N];
int S[15], T[15], T1[15];
int Div(int a, int b) {
  if (b == 0) return a;
  return a / b;
}
int pi[N];
int main() {
  char x;
  int m = 0;
  int n = 0;
  while (1) {
    x = getchar();
    if (x == '\n') break;
    S[x - '0']++;
  }
  while (1) {
    x = getchar();
    if (x == '\n') break;
    t[n++] = x;
    T[x - '0']++;
  }
  for (int i = 1; i < n; i++) {
    int j = pi[i - 1];
    while (j > 0 && t[i] != t[j]) j = pi[j - 1];
    if (t[i] == t[j]) j++;
    pi[i] = j;
  }
  int cnt = min(Div(S[0], T[0]), Div(S[1], T[1]));
  if (cnt > 0) {
    for (int i = pi[n - 1]; i < n; i++) {
      T1[t[i] - '0']++;
      ;
    }
    S[0] -= T[0];
    S[1] -= T[1];
    for (int i = 0; i < n; i++) {
      putchar(t[i]);
    }
    int cnt = min(Div(S[0], T1[0]), Div(S[1], T1[1]));
    for (int i = 0; i < cnt; i++) {
      for (int j = pi[n - 1]; j < n; j++) {
        putchar(t[j]);
        S[t[j] - '0']--;
      }
    }
    for (char i = '0'; i <= '1'; i++) {
      for (int j = 0; j < S[i - '0']; j++) {
        putchar(i);
      }
    }
  } else {
    for (char i = '0'; i <= '1'; i++) {
      for (int j = 0; j < S[i - '0']; j++) {
        putchar(i);
      }
    }
  }
}
