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 JavaScript (node.js v5.12) (judge verdict: Wrong Answer)

var Main = function(Input){
  // 行を分割
  var Lines = Input.split('\n');

  // 配列の要素数と、要素
  var Items = Number(Lines[0]);
  var Odd = {};
  var Even = {};

  Lines[1].split(' ').forEach(function(value, index){
    if(index % 2 == 0){
      if(Odd[value] == undefined){
        Odd[value] = 1;
      } else {
        ++Odd[value];
      }
    } else {
      if(Even[value] == undefined){
        Even[value] = 1;
      } else {
        ++Even[value];
      }
    }
  });

  // 最頻出の文字と回数、2番目に多い文字と回数を求める
  var OddFreqCount = 0;
  var OddFreqItem;
  var OddFrecCount2 = 0;
  var OddFreqItem2;
  var OddItemCount = 0;
  var EvenFreqCount = 0;
  var EvenFreqItem = 0;
  var EvenFreqCount2 = 0;
  var EvenFreqItem2;
  var EvenItemCount = 0;
  for(var Key in Odd){
    if(OddFreqCount <= Odd[Key]){
      OddFreqItem2 = OddFreqItem;
      OddFreqCount2 = OddFreqCount;
      OddFreqCount = Odd[Key];
      OddFreqItem = Key;
      ++OddItemCount;
    }
  }
  for(var Key in Even){
    if(EvenFreqCount <= Even[Key]){
      EvenFreqItem2 = EvenFreqItem;
      EvenFreqCount2 = EvenFreqCount;
      EvenFreqCount = Even[Key];
      EvenFreqItem = Key;
      ++EvenItemCount;
    }
  }

  // 最頻出の数字が一致しない
  if(OddFreqItem != EvenFreqItem){
    var O = Items / 2 - OddFreqCount;
    var E = Items / 2 - EvenFreqCount;
    console.log(O + E);
    return;
  }

  // 一致する
  if(OddFreqCount > EvenFreqCount){
    var O = Items / 2 - OddFreqCount;
    var E = Items / 2 - EvenFreqCount2;
    console.log(O + E);
    return;
  } else {
    var O = Items / 2 - OddFreqCount2;
    var E = Items / 2 - EvenFreqCount;
    console.log(O + E);
    return;
  }
}

// Main(require("fs").readFileSync('./180929C.txt', "utf8"));
Main(require('fs').readFileSync('/dev/stdin', 'utf8'));