import
java.util.*;
class
GFG{
static
int
findMinimumChanges(
int
N,
int
K,
char
[] S)
{
int
ans =
0
;
for
(
int
i =
0
; i < (K +
1
) /
2
; i++)
{
HashMap<Character, Integer> mp =
new
HashMap<>();
for
(
int
j = i; j < N; j += K)
{
if
(mp.containsKey(S[j]))
{
mp.put(S[j], mp.get(S[j]) +
1
);
}
else
{
mp.put(S[j],
1
);
}
}
for
(
int
j = N - i -
1
; j >=
0
; j -= K)
{
if
(K %
2
==
1
&& i == K /
2
)
break
;
if
(mp.containsKey(S[j]))
{
mp.put(S[j], mp.get(S[j]) +
1
);
}
else
{
mp.put(S[j],
1
);
}
}
int
curr_max = Integer.MIN_VALUE;
for
(Map.Entry<Character,
Integer> p : mp.entrySet())
{
curr_max = Math.max(curr_max,
p.getValue());
}
if
((K %
2
==
1
) && i == K /
2
)
ans += (N / K - curr_max);
else
ans += (N / K *
2
- curr_max);
}
return
ans;
}
public
static
void
main(String[] args)
{
String S =
"aabbcbbcb"
;
int
N = S.length();
int
K =
3
;
System.out.print(findMinimumChanges(
N, K, S.toCharArray()));
}
}