object Main extends App {
  val Array(n, k) = io.StdIn.readLine().split(' ').map(_.toInt)
  val positions = io.StdIn.readLine().split(' ').map(_.toInt)


  def calcMinDist(n: Int, k: Int, xs: Seq[Int]): Int = {
    import scala.math._
    // 左右に行ったり来たりせず、折り返しは最大一回までにするのが最短経路になる。   
    // N本のうち連続するK本のろうそくを選ぶ方法は、"N - K + 1"通りなので、
    // 全てのパターンに対して経路を計算して、最小値を探す。
    // 経路の一番左の座標をxl, 一番右の座標をxrとすると、
    // 左 -> 右の順に訪れる場合は: |xl| + |xr - xl|
    // 右 -> 左の順に訪れる場合は: |xr| + |xr - xl|
    // が最小値となる。
    List.range(0, n-k+1).foldLeft(Int.MaxValue){(acc, l) =>
        val r = l + k - 1
        min(acc, abs(xs(r) - xs(l)) + min(abs(xs(l)), abs(xs(r))))
      }
  }

  println(calcMinDist(n, k, positions))
}


