fun main(args: Array<String>) {
    abc117c()
}

fun abc117c() {
    val (n, m) = readLine()!!.split(" ").map { it.toInt() }
    val xList = readLine()!!.split(" ").map { it.toInt() }
        .sorted()

    // コマの個数が1個のパターン
    if (n == 1) {
        return println(xList.max()!! - xList.min()!!)
    }

    // 座標の個数が1個 or 座標の個数<=コマの個数のパターン
    if (m == 1 || m <= n) {
        return println(0)
    }

    // 以下はコマが2個以上 and 座標の個数>コマの個数のパターン

    val distanceList = mutableListOf<Long>()
    (1 until xList.size).forEach {
        distanceList.add(xList[it].toLong() - xList[it - 1].toLong())
    }

    val sortedDistanceList = distanceList.sorted()

    // コマの個数-1つ、座標間の移動を省けると考える
    val answer = sortedDistanceList.dropLast(n - 1)

    println(answer.sum())
}
