import java.io.PrintWriter

fun next() = readLine()!!
fun nextInt() = next().toInt()
fun nextLong() = next().toLong()
fun nextDouble() = next().toDouble()
fun nextList() = next().split(" ")
fun nextIntList() = nextList().map(String::toInt)
fun nextLongList() = nextList().map(String::toLong)
fun nextDoubleList() = nextList().map(String::toDouble)

val pw = PrintWriter(System.out)
fun print(s: Any = "") = pw.print(s)
fun println(s: Any = "") = pw.println(s)

fun main(args: Array<String>) {
    main()
    pw.flush()
}

fun main() {
    val N = nextInt()
    val V = nextIntList()
    val A = IntArray(N / 2 + 1)
    val B = IntArray(N / 2 + 1)
    for (i in 0 until N / 2) {
        A[i] = V[i * 2]
        B[i] = V[i * 2 + 1]
    }
    A[N / 2] = 0
    B[N / 2] = 0
    val C = A.toCountMap().toList().sortedByDescending { it.second }
    val D = B.toCountMap().toList().sortedByDescending { it.second }
    val (i, j) = when {
        C[0].first != D[0].first -> Pair(0, 0)
        C[0].second + D[1].second > C[1].second + D[0].second -> Pair(0, 1)
        else -> Pair(1, 0)
    }
    println(C.map { it.second }.sum() + D.map { it.second }.sum() - C[i].second - D[j].second)
}

fun IntArray.toCountMap(): Map<Int, Long> {
    return this.groupBy { it }.mapValues { if (it.key != 0) it.value.size.toLong() else 0 }
}