program abc111_c
    use,intrinsic :: iso_fortran_env
    implicit none
    integer(int32),parameter:: max_v = 100000
    integer(int32)::n,i
    integer(int32):: odd_ind(max_v), even_ind(max_v)
    integer(int32):: odd_ind_max1,even_ind_max1
    integer(int32):: odd_ind_max2,even_ind_max2
    integer(int32):: odd_ind_max_ind1,even_ind_max_ind1
    integer(int32):: odd_ind_max_ind2,even_ind_max_ind2
    integer(int32), allocatable:: v(:)

    read*, n
    allocate(v(n))
    read*, v(:)
    odd_ind(:) = 0; even_ind(:)=0

    do i=1,n,2
        odd_ind(v(i))=odd_ind(v(i))+1
        even_ind(v(i+1))=even_ind(v(i+1))+1
    end do

    call get_maxs(odd_ind,odd_ind_max1, odd_ind_max2,odd_ind_max_ind1,odd_ind_max_ind2)
    call get_maxs(even_ind,even_ind_max1,even_ind_max2,even_ind_max_ind1,even_ind_max_ind2)

    if (odd_ind_max_ind1 /= even_ind_max_ind1) then
        print'(i0)', n -  (odd_ind_max1 + even_ind_max1)
    else
        print'(i0)', n - max(odd_ind_max1+even_ind_max2, odd_ind_max2+even_ind_max1)
    end if
contains
    subroutine get_maxs(ar,m1,m2,ind_m1,ind_m2)
        integer(int32),intent(in):: ar(:)
        integer(int32),intent(out):: m1,m2,ind_m1, ind_m2
        integer(int32):: i

        m1=0; m2=0
        ind_m1=0;ind_m2=0
        do i=1,size(ar)
            if (ar(i) > m1) then
                m2 = m1
                m1 = ar(i)
                ind_m2 = ind_m1
                ind_m1 = i
                cycle
            end if

            if (ar(i) > m2)then
                m2 = ar(i)
                ind_m2 = i
            end if
        end do
    end subroutine
end program abc111_c