import numpy as np

n,k = list(map(int,input().split()))

field = np.array(input().split(),np.int64)

dp = np.zeros(n,np.int64)

# numpyのブロードキャストとスライスを組み合わせることで1重のfor文で済ますという変態的なことをしてる

# ただ計算量がO(N)になっているかは謎

for i in range(1,n):

  left = max(0,i - k)

  dp[i] = (dp[left:i] + abs(field[left:i] - field[i])).min()

print((dp[-1]))
n,k = list(map(int,input().split()))

field = list(map(int,input().split()))

dp = [float("inf")]*len(field)

dp[0] = 0

for i in range(0,n - 1):

  for j in range(1,k + 1):

    if i + j < n:

      dp[i + j] = min(dp[i + j],dp[i] + abs(field[i + j] - field[i]))

print((dp[-1]))

import numpy as np

n, k = list(map(int, input().split()))
field = np.array(input().split(), np.int64)
dp = np.zeros(n, np.int64)
# numpyのブロードキャストとスライスを組み合わせることで1重のfor文で済ますという変態的なことをしてる
# ただ計算量がO(N)になっているかは謎
for i in range(1, n):
    left = max(0, i - k)
    dp[i] = (dp[left:i] + abs(field[left:i] - field[i])).min()
print((dp[-1]))

n, k = list(map(int, input().split()))
field = list(map(int, input().split()))
dp = [float("inf")] * len(field)
dp[0] = 0
for i in range(0, n - 1):
    for j in range(1, k + 1):
        if i + j < n:
            dp[i + j] = min(dp[i + j], dp[i] + abs(field[i + j] - field[i]))
print((dp[-1]))

-import numpy as np - -field = np.array(input().split(), np.int64) -dp = np.zeros(n, np.int64) -# numpyのブロードキャストとスライスを組み合わせることで1重のfor文で済ますという変態的なことをしてる -# ただ計算量がO(N)になっているかは謎 -for i in range(1, n): -    left = max(0, i - k) -    dp[i] = (dp[left:i] + abs(field[left:i] - field[i])).min() +field = list(map(int, input().split())) +dp = [float("inf")] * len(field) +dp[0] = 0 +for i in range(0, n - 1): +    for j in range(1, k + 1): +        if i + j < n: +            dp[i + j] = min(dp[i + j], dp[i] + abs(field[i + j] - field[i]))