object Main{
  def main(args: Array[String]): Unit = {
    //n <- 本数  k <- 火をつける数
    val Array(n, k) : Array[Int] = io.StdIn.readLine().split(' ').map(_.toInt)
    val candles = io.StdIn.readLine().split(' ').map(_.toInt)
    println(sunukeSetFire(n,k,candles))
  }


  /** 距離を計算する */
  def calcDistance(l:Int, r:Int) : Int = {
    if(l < r) (l*2).abs + r.abs else l.abs + (r*2).abs
  }

  /**
    * 0以上になるときのindexを返す
    * 0以上がないときは最後のindexを返す
    */
  def getFirstIndexGreaterThanZero(candle: Seq[Int]) ={
    candle.zipWithIndex.find(_._1 >=0).map(_._2).getOrElse(candle.length-1)
  }

  def sunukeSetFire(n:Int, k:Int, candles:Seq[Int]):Int ={
    var distances : List[Int] = Nil
    var index = (getFirstIndexGreaterThanZero(candles) - k) match {
      case num if(num >= 0) => num
      case _ => 0
    }
    val maxIndex = index + k + k -2
    println(s"i: ${index}  im: ${maxIndex}")
    //indexがリストの最大かmaxIndexになるまでループ
    while(index + k <= candles.length && index + k <= maxIndex){
      val l = candles(index)
      val r = candles(index + k -1)
      println(s"l: ${l}  r:${r}")
      distances = calcDistance(l,r) :: distances
      index += 1
    }
    distances.min
  }
}