Guest User

Untitled

a guest
Sep 1st, 2024
1,106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.71 KB | None | 0 0
  1. from collections import Counter
  2.  
  3. n_tests = int(input())
  4. for _ in range(n_tests):
  5.     n = int(input())
  6.     s = input()
  7.  
  8.     if n % 2 == 0:
  9.         even_counter = Counter()
  10.         odd_counter = Counter()
  11.  
  12.         for i in range(len(s)):
  13.             if i % 2 == 0:
  14.                 even_counter[s[i]] += 1
  15.             else:
  16.                 odd_counter[s[i]] += 1
  17.  
  18.         even_counter_max = even_counter.most_common(1)[0]
  19.         odd_counter_max = odd_counter.most_common(1)[0]
  20.  
  21.         result = n // 2 - even_counter_max[1] + n // 2 - odd_counter_max[1]
  22.         print(result)
  23.     else:
  24.         if n == 1:
  25.             print(1)
  26.             continue
  27.         best = 10**9
  28.         even_counter = Counter()
  29.         odd_counter = Counter()
  30.         for i in range(len(s) - 1):
  31.             if i % 2 == 0:
  32.                 even_counter[s[i]] += 1
  33.             else:
  34.                 odd_counter[s[i]] += 1
  35.         even_counter_after = Counter()
  36.         odd_counter_after = Counter()
  37.         best = min(best, n // 2 - even_counter.most_common(1)[0][1] + n // 2 - odd_counter.most_common(1)[0][1])
  38.         for i in range(len(s)-2, -1, -1):
  39.             if i % 2 == 0:
  40.                 even_counter[s[i]] -= 1
  41.                 even_counter_after[s[i+1]] += 1
  42.             else:
  43.                 odd_counter[s[i]] -= 1
  44.                 odd_counter_after[s[i+1]] += 1
  45.             even_counter_merged = even_counter + even_counter_after
  46.             odd_counter_merged = odd_counter + odd_counter_after
  47.             best = min(best, n // 2 - even_counter_merged.most_common(1)[0][1] + n // 2 - odd_counter_merged.most_common(1)[0][1])
  48.         if n < 2:
  49.             print(best + 2)
  50.         else:
  51.             print(best + 1)
  52.  
  53.  
Advertisement
Add Comment
Please, Sign In to add comment