水题,直接贪心,可以转化成统计前后半部分数量最多的字符数量分别是多少。不难发现前后部分独立,分别处理即可。

#include <bits/stdc++.h>
using namespace std;

int main() {
    std::cin.tie(nullptr)->sync_with_stdio(false);
    std::string s;
    std::cin >> s;

    auto calc = [&](std::string s) -> int {
        std::map<char, int> mp;
        int mx = 0;
        for (auto c : s) mx = std::max(mx, ++mp[c]);
        return s.size() - mx;
    };

    int n = s.size();
    std::cout << calc(s.substr(0, n / 2)) + calc(s.substr(n / 2));

    return 0;
}

https://www.nowcoder.com/discuss/726480854079250432