fun main(args : Array<String>) {
    val (n, k) = readLine()!!.split(" ").map { it.toInt() }
    val xx = readLine()!!.split(" ").map { it.toLong() }

    val posCnt = xx.count { it >= 0 }
    val negCnt = n - posCnt

    val startIdx = if (k >= negCnt) 0 else negCnt-k

    var minD = Long.MAX_VALUE

    for (i in startIdx until n) {
        if (i+k > n) break

        val sPos = xx[i]
        val sPosA = Math.abs(sPos)
        val lPos = xx[i+k-1]
        val lPosA = Math.abs(lPos)

        if (sPos >= 0 && lPos >=0) {
            minD = Math.min(minD, lPosA)
        } else if (sPos < 0 && lPos < 0) {
            minD = Math.min(minD, sPosA)
        } else {
            if (sPosA >= lPosA) {
                minD = Math.min(minD, lPosA*2 + sPosA)
            } else {
                minD = Math.min(minD, lPosA + sPosA*2)
            }
        }
    }

    println(minD)
}