#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
const long long x = 115061;
const long long mod = 1e9 + 321;
const long long x2 = 118409;
const long long mod2 = 1e9 + 7;
vector<long long> pow1;
vector<long long> pow2;
vector<long long> h1;
vector<long long> h2;
string s, t;
long long m;
void gen(string s) {
  long long n = s.size();
  pow1.resize(2 * n + 1);
  pow2.resize(2 * n + 1);
  h1.resize(n + 1);
  h2.resize(n + 1);
  pow1[0] = pow2[0] = 1;
  for (long long i = 1; i <= 2 * n; i++) {
    pow1[i] = (pow1[i - 1] * x) % mod;
    pow2[i] = (pow2[i - 1] * x2) % mod2;
  }
  h1[0] = h2[0] = 0;
  for (long long i = 1; i <= n; i++) {
    h1[i] = (h1[i - 1] + (s[i - 1] + 1) * pow1[i - 1]) % mod;
    h2[i] = (h2[i - 1] + (s[i - 1] + 1) * pow2[i - 1]) % mod2;
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> s >> t;
  long long n = s.size();
  m = t.size();
  gen(t);
  vector<long long> p(m + 1, 0);
  p[0] = -1;
  for (long long i = 1; i <= m; i++) {
    long long k = p[i - 1];
    while (k >= 0) {
      if (t[k] == t[i - 1]) {
        p[i] = k + 1;
        break;
      }
      k = p[k];
    }
  }
  long long l = p[m];
  long long k1, k0;
  k1 = k0 = 0;
  for (auto f : s)
    if (f == '1')
      k1++;
    else
      k0++;
  string r1 = t.substr(0, l);
  string r2 = "";
  for (long long i = l; i < (m - l); i++) r2 += t[i];
  if ((2 * l) <= m) {
    long long i = 0;
    bool g = 1;
    while (i < n && g) {
      for (long long j = 0; j < l && i < n; j++, i++) {
        if (r1[j] == '0' && k0 > 0) {
          cout << '0';
          k0--;
        } else if (r1[j] == '1' && k1 > 0) {
          cout << '1';
          k1--;
        } else {
          g = 0;
          break;
        }
      }
      if (!g) break;
      for (long long j = 0; j < (m - 2 * l) && i < n; j++, i++) {
        if (r2[j] == '0' && k0 > 0) {
          cout << '0';
          k0--;
        } else if (r2[j] == '1' && k1 > 0) {
          cout << '1';
          k1--;
        } else {
          g = 0;
          break;
        }
      }
    }
  } else {
    r2 = "";
    for (long long i = l; i < m; i++) r2 += t[i];
    long long i = 0;
    bool g = 1;
    for (long long j = 0; j < l && i < n; j++, i++) {
      if (r1[j] == '0' && k0 > 0) {
        cout << '0';
        k0--;
      } else if (r1[j] == '1' && k1 > 0) {
        cout << '1';
        k1--;
      } else {
        g = 0;
        break;
      }
    }
    g = 1;
    while (i < n && g) {
      for (long long j = 0; j < r2.size() && i < n; j++, i++) {
        if (r2[j] == '0' && k0 > 0) {
          cout << '0';
          k0--;
        } else if (r2[j] == '1' && k1 > 0) {
          cout << '1';
          k1--;
        } else {
          g = 0;
          break;
        }
      }
    }
  }
  string h = "";
  h.append(k1, '1');
  h.append(k0, '0');
  cout << h;
  return 0;
}
