func_code_string: #include <bits/stdc++.h>   using namespace std;   using pii = pair<int, int>;   using ll = long long;   int kmp(string const& s) {     int n = s.size();     vector<int> lps(n, 0);     for (int i = 1; i < n; i++) {       int j = lps[i - 1];       while (j > 0 && s[i] != s[j]) j = lps[j - 1];       if (s[i] == s[j]) j++;       lps[i] = j;     }     return lps.back();   }   bool cmp(vector<int>& a, vector<int>& b) {     for (int i = 0; i < a.size(); i++)       if (a[i] > b[i]) return false;     return true;   }   void sub(vector<int>& a, vector<int>& b) {     for (int i = 0; i < a.size(); i++) a[i] -= b[i];   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     cout.tie(NULL);     string s, t;     cin >> s >> t;     int k = kmp(t);     string t1 = t.substr(0, k);     string t2 = t.substr(k, t.size() - k);     vector<int> cnts(2, 0), cntt1(2, 0), cntt2(2, 0);     for (char c : s) cnts[c -  0 ]++;     for (char c : t1) cntt1[c -  0 ]++;     for (char c : t2) cntt2[c -  0 ]++;     string ans =   ;     if (cmp(cntt1, cnts)) ans = t1, sub(cnts, cntt1);     while (cmp(cntt2, cnts)) {       for (char c : t2) ans += c;       sub(cnts, cntt2);     }     while (cnts[0] > 0) ans +=  0 , cnts[0]--;     while (cnts[1] > 0) ans +=  1 , cnts[1]--;     cout << ans << endl;   }   