OIG XVII - ant

// https://szkopul.edu.pl/problemset/problem/o1NEueUA9jK2jGzxyD_9EucA/site/?key=statement

#include <bits/stdc++.h>

using namespace std;

#define int long long

constexpr int sizik = 1000 * 1001;

#define ar std::array
#define pr std::pair
#define vec std::vector

typedef vec<vec<int>> _kra;

int cnt[sizik];

std::vector<int> alphabet;

void getTheBest() {
    std::sort(alphabet.begin(), alphabet.end(), [](char a, char b) { return cnt[a] > cnt[b]; });
}

void solve() {
    std::string s;
    std::cin >> s;

    std::string ans;

    for (const auto& a : s) {
        cnt[a]++;
    }

    ans.push_back(32);
    ans.push_back(32);

    while (true) {
        getTheBest();

        bool isGood = false;

        int j = ans.size();

        for (int i = 0; i < (int)alphabet.size(); i++) {
            int c1 = alphabet[i];

            if (cnt[c1] <= 0) break;

            if (ans[j - 1] != c1 && ans[j - 2] != c1) {
                isGood = true;
                ans.push_back(c1);
                cnt[c1]--;
                break;
            }
        }

        if (!isGood) break;
    }

    ans.erase(ans.begin(), ans.begin() + 2);

    std::cout << ans << '\n';
}

int32_t main() {
    std::ios_base::sync_with_stdio(0);
    std::cin.tie(0);
    std::cout.tie(0);

    for (char i = 'a'; i <= 'z'; i++) {
        alphabet.push_back(i);
    }

    int t = 1;
    // std::cin >> t;

    for (; t > 0; t--) {
        solve();
    }

    return 0;
}