#include <bits/stdc++.h>
using namespace std;
const long double pi = acos(-1);
const long long mod = 1e9 + 7;
const long double eps = 1e-9;
const int maxn = 5e5 + 10;
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
int a[2];
int Next[maxn];
string p, s, ss, tempp;
int len1, len2;
void getNext() {
  Next[0] = -1;
  int i = 0, j = -1;
  while (i < len2) {
    if (j == -1 || p[i] == p[j]) {
      ++i;
      ++j;
      Next[i] = j;
    } else
      j = Next[j];
  }
}
void solve() {
  for (int i = 0; i < 2; i++) {
    while (a[i] > 0) {
      ss += (char)(i + '0');
      a[i]--;
    }
  }
}
signed main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> s >> p;
  len1 = s.length(), len2 = p.length();
  for (int i = 0; i < s.length(); i++) {
    a[(int)(s[i] - '0')]++;
  }
  getNext();
  int temp = Next[len2];
  int cnt = len2 - temp;
  for (int i = temp; i < len2; i++) {
    tempp += p[i];
  }
  for (int i = 0; i < temp; i++) {
    if (a[(int)(p[i] - '0')] > 0) {
      ss += p[i];
      a[(int)(p[i] - '0')]--;
    } else {
      solve();
      break;
    }
  }
  int x = 0;
  while (x < len1 - temp) {
    int t = (int)(tempp[x] - '0');
    if (a[t] > 0) {
      ss += tempp[x];
      a[t]--;
    } else {
      solve();
      break;
    }
    if (x == (len2 - 1 - temp))
      x = 0;
    else
      x++;
  }
  cout << ss << endl;
  return 0;
}
