#include <bits/stdc++.h>
using namespace std;
int ar[500005];
char ch[500005], ch1[500005];
int n, m, ii, k;
vector<int> Prefix_function() {
  vector<int> pi(m);
  for (int i = 1; i < m; i++) {
    int j = pi[i - 1];
    while (j > 0 && ch1[i] != ch1[j]) j = pi[j - 1];
    if (ch1[j] == ch1[i]) j++;
    pi[i] = j;
  }
  return pi;
}
void solve() {
  scanf("%s%s", ch, ch1);
  n = strlen(ch);
  m = strlen(ch1);
  vector<int> pi = Prefix_function();
  int ace = pi[m - 1];
  int cnt0 = 0, cnt1 = 0;
  int cn0 = 0, cn1 = 0;
  int need0 = 0, need1 = 0;
  for (int i = 0; i < n; i++) {
    if (ch[i] == '0')
      cnt0++;
    else
      cnt1++;
  }
  for (int i = 0; i < m; i++) {
    if (ch1[i] == '0')
      cn0++;
    else
      cn1++;
  }
  for (int i = ace; i < m; i++) {
    if (ch1[i] == '0')
      need0++;
    else
      need1++;
  }
  bool f = true;
  string ans;
  while (1) {
    if (f) {
      if (cn0 > cnt0 || cn1 > cnt1) break;
      for (int i = 0; i < m; i++) ans += ch1[i];
      cnt0 -= cn0;
      cnt1 -= cn1;
      f = false;
    } else {
      if (need0 > cnt0 || need1 > cnt1) break;
      for (int i = ace; i < m; i++) ans += ch1[i];
      cnt0 -= need0;
      cnt1 -= need1;
    }
  }
  while (cnt1 > 0) {
    cnt1--;
    ans += '1';
  }
  while (cnt0 > 0) {
    cnt0--;
    ans += '0';
  }
  cout << ans << "\n";
}
int main() {
  int t = 1;
  while (t--) solve();
  return 0;
}
