Problem:
Score : 300 points

Problem Statement

A sequence a_1,a_2,... ,a_n is said to be /\/\/\/ when the following conditions are satisfied:

For each i = 1,2,..., n-2, a_i = a_{i+2}.

Exactly two different numbers appear in the sequence.

You are given a sequence v_1,v_2,...,v_n whose length is even.
We would like to make this sequence /\/\/\/ by replacing some of its elements.
Find the minimum number of elements that needs to be replaced.

Constraints

2 \leq n \leq 10^5

n is even.

1 \leq v_i \leq 10^5

v_i is an integer.

Input

Input is given from Standard Input in the following format:

n
v_1 v_2 ... v_n

Output

Print the minimum number of elements that needs to be replaced.

Sample Input 1

4
3 1 3 2

Sample Output 1

1

The sequence 3,1,3,2 is not /\/\/\/, but we can make it /\/\/\/ by replacing one of its elements: for example, replace the fourth element to make it 3,1,3,1.

Sample Input 2

6
105 119 105 119 105 119

Sample Output 2

0

The sequence 105,119,105,119,105,119 is /\/\/\/.

Sample Input 3

4
1 1 1 1

Sample Output 3

2

The elements of the sequence 1,1,1,1 are all the same, so it is not /\/\/\/.

Solution in PHP7 (7.0.15) (judge verdict: Wrong Answer)

<?php
class In {
    private $array = [];
    private $length = 0;
    private $count = 0;

    function __construct()	{
        while (!feof(STDIN)) {
            $str = trim(fgets(STDIN));
            $this->array = array_merge($this->array, explode(' ', $str));
        }
        $this->length = count($this->array);
    }
    
    public function get(int $i){
        $this->array[$i];
    }

    public function next() {
        return $this->array[$this->count++];
    }
    public function hasNext() {
        return $this->count < $this->length;
    }
    public function nextInt() {
        return (int)$this->next();
    }
    public function nextDouble() {
        return (double)$this->next();
    }
    public function nextString() {
        return (string)$this->next();
    }
}

class Out {
    public static function line($str = "") {
        echo $str . PHP_EOL;
    }
}

$in = new In();
$length = $in->nextInt();
$cnt = 0;
$arr1 = [];
$arr2 = [];

while ($in->hasNext()) {
    if(++$cnt % 2){
        array_push($arr1, $in->nextInt());
    }else{
        array_push($arr2, $in->nextInt());
    }
}

$arr1Counts = array_count_values($arr1);
$arr1KeyCount = max($arr1Counts);
$arr1Key = array_keys($arr1Counts, $arr1KeyCount);

$arr2Counts = array_count_values($arr2);
$arr2KeyCount = max($arr2Counts);
$arr2Key = array_keys($arr2Counts, $arr2KeyCount);

$a1 = $length / 2 - $arr1KeyCount;

if(count(array_intersect($arr1Key, $arr2Key)) === 1 && (count($arr1Key) === 1 || count($arr2Key) === 1)){
    if(count($arr1Counts) === 1 && count($arr2Counts) === 1){
        $a2 = $length / 2;

    }else{
        $arr2Counts = array_count_values($arr2);
        rsort($arr2Counts);
        $arr2KeyCount = $arr2Counts[1];

        $a2 = $length / 2 - $arr2KeyCount;
    }
}else{
    $a2 = $length / 2 - $arr2KeyCount;
}

Out::line($a1 + $a2);