# input()

# int(input())

# map(int, input().split())

# list(map(int, input().split()))

import itertools

import math

import fractions

import functools

l = [0]*(10**5+1)

r = [0]*(10**5+1)

 

n = int(eval(input()))

v = list(map(int, input().split()))

 

for i in range(n):

    if i % 2 == 0:

        l[v[i]] += 1

    else:

        r[v[i]] += 1

 

max_l = l.index(max(l))

max_r = r.index(max(r))

count = 0

 

if max_l == max_r:

    for i in range(len(r)):

        if r[i] == r[max_r]:

            r[i] = 0

        if l[i] == l[max_l]:

            l[i] = 0

if max(l) > max(r):

    max_l = l.index(max(l))

else:

    max_r = r.index(max(r))

 

for i in range(n):

    if i % 2 == 0 and v[i] != max_l:

        count += 1

    if i % 2 != 0 and v[i] != max_r:

        count += 1

print(count)
# input()

# int(input())

# map(int, input().split())

# list(map(int, input().split()))

import math

import sys

import bisect

import heapq  # 優先度付きキュー(最小値取り出し)



inf = 10 ** 15

mod = 10 ** 9 + 7

n = int(eval(input()))

v = list(map(int, input().split()))



# 偶数番目の要素において、iの数が何個あったか

even = [0 for i in range(100001)]

# 奇数番目の要素において、iの数が何個あったか

odd = [0 for i in range(100001)]



# 偶数番目、奇数番目の要素、それぞれ数える

for i in range(0, n-1, 2):

    even[v[i]] += 1

    odd[v[i+1]] += 1



# 偶数番目の要素のうち最も多かった数値

maxeveni = -1

# 偶数番目の要素のうち最も多かった数値の個数

maxeven = 0

# 偶数番目の要素のうち2番目に多かった数値の個数

preeven = 0



# 奇数番目の要素のうち最も多かった数値

maxoddi = -1

# 奇数番目の要素のうち最も多かった数値の個数

maxodd = 0

# 奇数番目の要素のうち2番目に多かった数値の個数

preodd = 0



# 偶数番目の要素を走査

for i in range(1, 100001):

    num = even[i]

    if maxeven <= num:

        maxeveni = i

        preeven = maxeven

        maxeven = num

    elif preeven <= num:

        preeven = num



# 奇数番目の要素を走査

for i in range(1, 100001):

    num = odd[i]

    if maxodd <= num:

        maxoddi = i

        preodd = maxodd

        maxodd = num

    elif preodd <= num:

        preodd = num



ans = 0



# 要素のうち最も多かった数値が偶数番目と奇数番目で一致していなかった場合

if maxeveni != maxoddi:

    ans = n - maxeven - maxodd

# 要素のうち最も多かった数値が偶数番目と奇数番目で一致していた場合

else:

    ans = min(n - preeven - maxodd, n - maxeven - preodd)

print(ans)
# input()
# int(input())
# map(int, input().split())
# list(map(int, input().split()))
import itertools
import math
import fractions
import functools

l = [0] * (10**5 + 1)
r = [0] * (10**5 + 1)
n = int(eval(input()))
v = list(map(int, input().split()))
for i in range(n):
    if i % 2 == 0:
        l[v[i]] += 1
    else:
        r[v[i]] += 1
max_l = l.index(max(l))
max_r = r.index(max(r))
count = 0
if max_l == max_r:
    for i in range(len(r)):
        if r[i] == r[max_r]:
            r[i] = 0
        if l[i] == l[max_l]:
            l[i] = 0
if max(l) > max(r):
    max_l = l.index(max(l))
else:
    max_r = r.index(max(r))
for i in range(n):
    if i % 2 == 0 and v[i] != max_l:
        count += 1
    if i % 2 != 0 and v[i] != max_r:
        count += 1
print(count)

# input()
# int(input())
# map(int, input().split())
# list(map(int, input().split()))
import math
import sys
import bisect
import heapq  # 優先度付きキュー(最小値取り出し)

inf = 10**15
mod = 10**9 + 7
n = int(eval(input()))
v = list(map(int, input().split()))
# 偶数番目の要素において、iの数が何個あったか
even = [0 for i in range(100001)]
# 奇数番目の要素において、iの数が何個あったか
odd = [0 for i in range(100001)]
# 偶数番目、奇数番目の要素、それぞれ数える
for i in range(0, n - 1, 2):
    even[v[i]] += 1
    odd[v[i + 1]] += 1
# 偶数番目の要素のうち最も多かった数値
maxeveni = -1
# 偶数番目の要素のうち最も多かった数値の個数
maxeven = 0
# 偶数番目の要素のうち2番目に多かった数値の個数
preeven = 0
# 奇数番目の要素のうち最も多かった数値
maxoddi = -1
# 奇数番目の要素のうち最も多かった数値の個数
maxodd = 0
# 奇数番目の要素のうち2番目に多かった数値の個数
preodd = 0
# 偶数番目の要素を走査
for i in range(1, 100001):
    num = even[i]
    if maxeven <= num:
        maxeveni = i
        preeven = maxeven
        maxeven = num
    elif preeven <= num:
        preeven = num
# 奇数番目の要素を走査
for i in range(1, 100001):
    num = odd[i]
    if maxodd <= num:
        maxoddi = i
        preodd = maxodd
        maxodd = num
    elif preodd <= num:
        preodd = num
ans = 0
# 要素のうち最も多かった数値が偶数番目と奇数番目で一致していなかった場合
if maxeveni != maxoddi:
    ans = n - maxeven - maxodd
# 要素のうち最も多かった数値が偶数番目と奇数番目で一致していた場合
else:
    ans = min(n - preeven - maxodd, n - maxeven - preodd)
print(ans)

-import itertools -import fractions -import functools +import sys +import bisect +import heapq  # 優先度付きキュー(最小値取り出し) -l = [0] * (10**5 + 1) -r = [0] * (10**5 + 1) +inf = 10**15 +mod = 10**9 + 7 -for i in range(n): -    if i % 2 == 0: -        l[v[i]] += 1 -    else: -        r[v[i]] += 1 -max_l = l.index(max(l)) -max_r = r.index(max(r)) -count = 0 -if max_l == max_r: -    for i in range(len(r)): -        if r[i] == r[max_r]: -            r[i] = 0 -        if l[i] == l[max_l]: -            l[i] = 0 -if max(l) > max(r): -    max_l = l.index(max(l)) +# 偶数番目の要素において、iの数が何個あったか +even = [0 for i in range(100001)] +# 奇数番目の要素において、iの数が何個あったか +odd = [0 for i in range(100001)] +# 偶数番目、奇数番目の要素、それぞれ数える +for i in range(0, n - 1, 2): +    even[v[i]] += 1 +    odd[v[i + 1]] += 1 +# 偶数番目の要素のうち最も多かった数値 +maxeveni = -1 +# 偶数番目の要素のうち最も多かった数値の個数 +maxeven = 0 +# 偶数番目の要素のうち2番目に多かった数値の個数 +preeven = 0 +# 奇数番目の要素のうち最も多かった数値 +maxoddi = -1 +# 奇数番目の要素のうち最も多かった数値の個数 +maxodd = 0 +# 奇数番目の要素のうち2番目に多かった数値の個数 +preodd = 0 +# 偶数番目の要素を走査 +for i in range(1, 100001): +    num = even[i] +    if maxeven <= num: +        maxeveni = i +        preeven = maxeven +        maxeven = num +    elif preeven <= num: +        preeven = num +# 奇数番目の要素を走査 +for i in range(1, 100001): +    num = odd[i] +    if maxodd <= num: +        maxoddi = i +        preodd = maxodd +        maxodd = num +    elif preodd <= num: +        preodd = num +ans = 0 +# 要素のうち最も多かった数値が偶数番目と奇数番目で一致していなかった場合 +if maxeveni != maxoddi: +    ans = n - maxeven - maxodd +# 要素のうち最も多かった数値が偶数番目と奇数番目で一致していた場合 -    max_r = r.index(max(r)) -for i in range(n): -    if i % 2 == 0 and v[i] != max_l: -        count += 1 -    if i % 2 != 0 and v[i] != max_r: -        count += 1 -print(count) +    ans = min(n - preeven - maxodd, n - maxeven - preodd) +print(ans)