fork download
  1. def getSwaps(c, s):
  2. positions = [i for i, char in enumerate(s) if char == c]
  3.  
  4. if len(positions) <= 1:
  5. return 0
  6.  
  7. offsets = [pos - i for i, pos in enumerate(positions)]
  8. offsets.sort()
  9. median = offsets[len(offsets) // 2]
  10. swaps = sum(abs(offset - median) for offset in offsets)
  11.  
  12. return swaps
  13.  
  14.  
  15. def solve():
  16. n = int(input())
  17. s = input()
  18.  
  19. swapsA = getSwaps('a', s)
  20. swapsB = getSwaps('b', s)
  21.  
  22. print(min(swapsA, swapsB))
  23.  
  24.  
  25. def main():
  26. num_test_cases_str = input()
  27. if not num_test_cases_str: return
  28. num_test_cases = int(num_test_cases_str)
  29. for _ in range(num_test_cases):
  30. solve()
  31.  
  32. main()
Success #stdin #stdout 0.11s 14212KB
stdin
5
4
abab
6
bababa
7
abababa
2
ab
1
b
stdout
1
2
2
0
0