#include <bits/stdc++.h>
using namespace std;
long long aa;
bool bb;
char ch;
long long scan() {
  while (ch = getchar(), (ch < '0' || ch > '9') && ch != '-')
    ;
  ch == '-' ? (bb = 1, aa = 0) : (bb = 0, aa = ch - 48);
  while (ch = getchar(), (ch >= '0' && ch <= '9')) aa = aa * 10 + ch - 48;
  return (bb ? (-aa) : (aa));
}
char s[500010];
char str[500010];
int n, ans, x, y, xx, yy, cnt0, cnt1;
int fail[500010] = {};
int Min(int u, int v) { return u < v ? u : v; }
void KMP() {
  int i, j, k = 0;
  for (i = 2; i <= n; ++i) {
    fail[i] = 0;
    while (k && s[k + 1] != s[i]) k = fail[k];
    if (s[k + 1] == s[i]) ++k;
    fail[i] = k;
  }
  return;
}
int main() {
  scanf("%s", str + 1);
  n = strlen(str + 1);
  for (int i = 1; i <= n; ++i) {
    if (str[i] == '0')
      ++cnt0;
    else
      ++cnt1;
  }
  scanf("%s", s + 1);
  n = strlen(s + 1);
  KMP();
  for (int i = 1; i <= n; ++i) {
    if (s[i] == '0')
      ++x;
    else
      ++y;
  }
  for (int i = fail[n] + 1; i <= n; ++i) {
    if (s[i] == '0')
      ++xx;
    else
      ++yy;
  }
  if (x > cnt0 || y > cnt1) {
    printf("%s", str + 1);
    return 0;
  }
  if (yy == 0)
    ans = 1 + (cnt0 - x) / xx;
  else if (xx == 0)
    ans = 1 + (cnt1 - y) / yy;
  else
    ans = 1 + Min((cnt0 - x) / xx, (cnt1 - y) / yy);
  printf("%s", s + 1);
  for (int T = 1; T < ans; ++T)
    for (int i = fail[n] + 1; i <= n; ++i) putchar(s[i]);
  for (int i = x + (ans - 1) * xx; i < cnt0; ++i) cout << "0";
  for (int i = y + (ans - 1) * yy; i < cnt1; ++i) cout << "1";
}
