#include <bits/stdc++.h>
using namespace std;
int nxt[500010];
void GetNext(string p, int pLen) {
  int i, n, k;
  n = pLen + 1;
  k = -1;
  nxt[0] = -1;
  i = 0;
  while (i < n) {
    if (k == -1 || p[i] == p[k]) {
      i++;
      k++;
      nxt[i] = k;
    } else
      k = nxt[k];
  }
}
int main() {
  string s, t, add, ans;
  cin >> s >> t;
  int cnt, t_len = t.length(), s_len = s.length();
  int s1 = count(s.begin(), s.end(), '1');
  int s0 = s_len - s1;
  int t1 = count(t.begin(), t.end(), '1');
  int t0 = t_len - t1;
  if (s1 < t1 || s0 < t0) {
    cout << s;
    return 0;
  }
  GetNext(t, t_len);
  cnt = nxt[t_len];
  add += t.substr(cnt, t_len - cnt);
  int add1 = count(add.begin(), add.end(), '1');
  int add0 = t_len - cnt - add1;
  ans = t;
  s1 -= t1;
  s0 -= t0;
  while (s1 >= add1 && s0 >= add0) {
    ans += add;
    s1 -= add1;
    s0 -= add0;
  }
  cout << ans;
  while (s1--) {
    printf("1");
  }
  while (s0--) {
    printf("0");
  }
  return 0;
}
