program main
	implicit none
	integer :: n
	integer, allocatable :: v(:)
	integer :: i, baketu(1:2,1:100010),baketu_num(1:2,1:100010), ans
	
	read(*, *) n
	allocate(v(1:n))
	read(*, *) v
	
	baketu = 0
	do i = 1, n, 2
		baketu(1,v(i)) = baketu(1,v(i)) + 1
	end do
	do i = 2, n, 2
		baketu(2,v(i)) = baketu(2,v(i)) + 1
	end do
	
	call heapsort2(100010,baketu(1,:),baketu_num(1,:))
	call heapsort2(100010,baketu(2,:),baketu_num(2,:))
	
	if(baketu_num(1,100010) /= baketu_num(2,100010)) then
		ans = n - (baketu(1,100010) + baketu(2,100010))
	else
		ans = n - max(baketu(1,100010)+baketu(2,100009),baketu(1,100009)+baketu(2,100010))
	end if
	
	write(*, *) ans
	
	contains
	subroutine heapsort2(n,array,turn)
		implicit none
		integer,intent(in)::n
		integer,intent(out)::turn(1:n)
		integer,intent(inout)::array(1:n)

		integer::i,k,j,l,m
		double precision::t
  
		if(n.le.0)then
			write(6,*)"Error, at heapsort"; stop
		endif
		if(n.eq.1)return

		do i=1,N
			turn(i)=i
		enddo

		l=n/2+1
		k=n
		do while(k.ne.1)
			if(l.gt.1)then
				l=l-1
				t=array(l)
				m=turn(l)
			else
				t=array(k)
				m=turn(k)
				array(k)=array(1)
				turn(k)=turn(1)
				k=k-1
				if(k.eq.1) then
					array(1)=t
					turn(1)=m
					exit
				endif
			endif
			i=l
			j=l+l
			do while(j.le.k)
				if(j.lt.k)then
					if(array(j).lt.array(j+1))j=j+1
				endif
				if (t.lt.array(j))then
					array(i)=array(j)
					turn(i)=turn(j)
					i=j
					j=j+j
				else
					j=k+1
				endif
			enddo
			array(i)=t
			turn(i)=m
		enddo
		
		return
	end subroutine heapsort2
end program main