#include <bits/stdc++.h>
using namespace std;
const long long int mod = 1e9 + 7;
const long long int mod1 = 998244353;
bool isprime[100000];
vector<long long int> prime;
void sieve() {
  long long int i, j;
  for (i = 2; i < 1e5; i++) isprime[i] = true;
  for (i = 2; i < 1e5; i++) {
    if (isprime[i]) {
      prime.push_back(i);
      for (j = i * i; j < 1e5; j += i) isprime[i] = false;
    }
  }
}
long long int power(long long int a, long long int b) {
  long long int res = 1;
  while (b > 0) {
    if (b & 1) res = res * a;
    a = a * a;
    b >>= 1;
  }
  return res;
}
long long int powermod(long long int a, long long int b) {
  long long int res = 1;
  while (b > 0) {
    if (b & 1) res = ((res % mod1) * (a % mod1)) % mod1;
    a = (a * a) % mod1;
    b >>= 1;
  }
  return res;
}
int main() {
  long long int T;
  T = 1;
  while (T--) {
    long long int i;
    string s;
    cin >> s;
    string t;
    cin >> t;
    long long int cnts[2] = {0};
    long long int cntt[2] = {0};
    for (i = 0; i < s.size(); i++) {
      if (s[i] == '0')
        cnts[0]++;
      else
        cnts[1]++;
    }
    for (i = 0; i < t.size(); i++) {
      if (t[i] == '0')
        cntt[0]++;
      else
        cntt[1]++;
    }
    string x = t + '#' + t.substr(1, t.size() - 1);
    long long int pi[x.size() + 1];
    pi[0] = 0;
    for (i = 1; i < x.size(); i++) {
      long long int j = pi[i - 1];
      while (j > 0 && x[i] != x[j]) {
        j = pi[j - 1];
      }
      if (x[i] == x[j]) j++;
      pi[i] = j;
    }
    long long int z = pi[x.size() - 1];
    if ((cntt[1] > cnts[1]) || (cntt[0] > cnts[0])) {
      cout << s;
      continue;
    } else {
      cnts[1] -= cntt[1];
      cnts[0] -= cntt[0];
      cntt[0] = 0;
      cntt[1] = 0;
      for (i = z; i < t.size(); i++) {
        if (t[i] == '0')
          cntt[0]++;
        else
          cntt[1]++;
      }
      cout << t;
      while ((cnts[1] >= cntt[1]) && (cnts[0] >= cntt[0])) {
        cout << t.substr(z, (t.size() - z));
        cnts[1] -= cntt[1];
        cnts[0] -= cntt[0];
      }
      while (cnts[0] > 0) {
        cout << "0";
        cnts[0]--;
      }
      while (cnts[1] > 0) {
        cout << "1";
        cnts[1]--;
      }
    }
  }
  return 0;
}
