num, @k = gets.split(" ").map(&:to_i)
@steps = gets.split(" ").map(&:to_i)
@memo = []
@memo[0] = 0
@memo[1] = (@steps[0] - @steps[1]).abs

def recursive_min(step_number)
  if @memo[step_number]
    return @memo[step_number]
  else
    min = 10000
    # 1ステップ〜@kステップ手前からのそれぞれのコストを全てtmpに格納する
    # ただし足場1より手前に行かないように、step_numberを最大回数とする
    (1..[@k, step_number].min).each do |back|
      if min > (@steps[step_number - back] - @steps[step_number]).abs + recursive_min(step_number - back)
        min = (@steps[step_number - back] - @steps[step_number]).abs + recursive_min(step_number - back)
      end 
    end
    # 最も小さいコストを格納
    @memo[step_number] = min
    return min
  end
end

(2..num - 1).each do |index|
  recursive_min(index)
end

puts recursive_min(num - 1)