汪汪汪汪汪汪汪汪汪汪汪汪汪汪王汪汪汪汪汪汪汪汪 这个题非常简单,首先,分为k个字串,汪汪汪,要求每个子串都相同,并且更改次数最小,汪汪汪,那么我们就让每个子串相同位置更改次数最小,即记录不同子串相同位置字母出现次数的最大值,并用子串个数减去它,即为更改次数最小值,喵呜~(可恶的猫猫乱入),注意不是直接记录出现次数最小值,汪汪汪,对于数据结构,用mp或者vector。

#include <bits/stdc++.h>
using namespace std;
void solve() {
    int n,k;cin >> n >> k;
    vector<vector<char>> arr(n / k + 1,vector<char>(k  +1));
    for(int i = 1;i <= n / k;i++) {
        for(int j = 1;j <= k;j++) {
            cin >> arr[i][j];
        }
    }
    vector<int> mp(26);
    int ans = 0;
    for(int j = 1;j <= k;j++) {
        for(int i = 1;i <= n/k;i++) {
            mp[arr[i][j] - 'a']++;
        }
        int mx = *max_element(mp.begin(), mp.end());
        // cout << mi << " " << j << "\n";
        mp.assign(26, 0);
        ans += (n / k - mx);
    }
    cout << ans << "\n";
}
int main() {
    cin.tie(0) -> sync_with_stdio(0);
    solve();
    return 0;
}