Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define int long long
- #define all(s) s.begin(),s.end()
- using namespace std;
- main() {
- int t;
- cin >> t;
- while(t--) {
- int n, k;
- cin >> n >> k;
- string s;
- cin >> s;
- if(n == k) {
- int ans = 0;
- for(int i = 0; i < n / 2; i++) {
- ans += (s[i] != s[n - i - 1]);
- }
- cout << ans << endl;
- continue;
- }
- int a[k][26], ans = 0;
- memset(a, 0, sizeof a);
- //n / k % 2 == 0
- if(1) {
- for(int i = 0; i < n / 2; i++) {
- a[i % k][s[i] - 'a']++;
- }
- reverse(all(s));
- for(int i = 0; i < n / 2; i++) {
- a[i % k][s[i] - 'a']++;
- }
- if((n & 1) && (k & 1)) {
- a[k / 2][s[n / 2] - 'a']++;
- }
- for(int i = 0; i < k / 2; i++) {
- int mx = 0;
- int al = 2 * n / k;
- for(int j = 0; j < 26; j++) {
- mx = max(mx, a[i][j] + a[k - i - 1][j]);
- }
- ans += (al - mx);
- }
- if(k & 1) {
- int al = n / k;
- int mx = 0;
- for(int i = 0; i < 26; i++) {
- mx = max(mx, a[k / 2][i]);
- }
- ans += (al - mx);
- }
- }
- cout << ans << endl;
- }
- }
- /*
- 0 1 2 3
- a
- 3
- //
- */
- // 2 3 5 7 11 13 17 19 23 29 31 37
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement