function main(input) {
  var args = input.split('\n');
  var n = parseInt(args[0]);
  var an = args[1].split(' ');
  var on = [];
  var en = [];
  for(var i = 0; i < n; i++){
    if(i % 2 == 0) en.push(an[i]);
    else on.push(an[i]);
  }
  
  //最頻値と次の値を求める
  //出力を(x,n) (x2,n2)とする
  Array.prototype.mode2 = function () {
    if (this.length === 0){
        //配列の個数が0だとエラーを返す。
        throw new Error("配列の長さが0のため最頻値が計算できません");
        //nullを返しても困らない時(配列の中にnullが無い時)はnullを返すように実装しても良い。
        //return null
    }
    //回数を記録する連想配列
    var counter = {}
    //本来の値を入れた辞書
    var nativeValues = {}

    //最頻値とその出現回数を挿入する変数
    var maxCounter = 0;
    var secondCounter = 0;
    var maxValue = null;
    var secondValue = null;

    for (var i = 0; i < this.length; i++) {
        //counterに存在しなければ作る。keyは型を区別する
        if (!counter[this[i] + "_" + typeof this[i]]) {
            counter[this[i] + "_" + typeof this[i]] = 0;
        }
        counter[this[i] + "_" + typeof this[i]]++;
        nativeValues[this[i] + "_" + typeof this[i]] = this[i];

    }
    for (var j = 0; j < Object.keys(counter).length; j++) {
        key = Object.keys(counter)[j];
        if (counter[key] > maxCounter) {
            secondCounter = maxCounter;
            secondValue = maxValue;
            maxCounter = counter[key];
            maxValue = nativeValues[key]
        }
    }
    return [[maxValue,maxCounter],[secondValue,secondCounter]];
  }
  var evModes = en.mode2();
  var odModes = on.mode2();
  var ans = 0;
  
  if(evModes[0][0] != odModes[0][0]){
    ans = n - (evModes[0][1] + odModes[0][1]);
  }else{
    ans = n - Math.max(evModes[1][1] + odModes[0][1], evModes[0][1] + odModes[1][1]);
  }
  console.log(ans);
}
main(require('fs').readFileSync('/dev/stdin', 'utf8'));