implicit none
integer :: n,k
integer,allocatable :: x(:), z(:)
integer :: i,j,t1,t2,rswp,l,r
logical :: flg_swp,flg_l,flg_r

read *,n,k
allocate(x(n))
read *,(x(i),i=1,n)

allocate(z(n))

!!!!!!!!!!!!!!!!! If go to left first ==> t1
do i = 1, n
   if (x(i) < 0) then
      z(i) = 2*x(i)
   else
      z(i) = x(i)
   endif
enddo

i = n
flg_swp = .false.
do while (i > 1 .or. flg_swp)
   i = (i * 10) / 13
   if (i < 1) then
      i = 1
   else if (i == 9 .or. i == 10) then 
      i = 11
   endif
   flg_swp = .false.
   do j = 1, n-i
      if (abs(z(j)) > abs(z(j+i))) then
         rswp = z(j) 
         z(j) = z(j+i)
         z(j+i) = rswp
         flg_swp = .true.
      endif
   enddo
enddo

l = 0
r = 0
flg_l = .false.
flg_r = .false.
do i = k,1,-1
   if (z(i) < 0) then
      if (flg_l) cycle
      l = -z(i)
      flg_l = .true.
   else
      if (flg_r) cycle
      r = z(i)
      flg_r = .true.
   endif
   if (flg_l .and. flg_r) then
      exit
   endif
enddo
t1 = l + r

!!!!!!!!!!!!!!!!! If go to right first ==> t2
do i = 1, n
   if (x(i) < 0) then
      z(i) = x(i)
   else
      z(i) = 2*x(i)
   endif
enddo

i = n
flg_swp = .false.
do while (i > 1 .or. flg_swp)
   i = (i * 10) / 13
   if (i < 1) then
      i = 1
   else if (i == 9 .or. i == 10) then 
      i = 11
   endif
   flg_swp = .false.
   do j = 1, n-i
      if (abs(z(j)) > abs(z(j+i))) then
         rswp = z(j) 
         z(j) = z(j+i)
         z(j+i) = rswp
         flg_swp = .true.
      endif
   enddo
enddo

l = 0
r = 0
flg_l = .false.
flg_r = .false.
do i = k,1,-1
   if (z(i) < 0) then
      if (flg_l) cycle
      l = -z(i)
      flg_l = .true.
   else
      if (flg_r) cycle
      r = z(i)
      flg_r = .true.
   endif
   if (flg_l .and. flg_r) then
      exit
   endif
enddo
t2 = l + r

print '(i0)',min(t1,t2)
end