import sys

import numpy as np

# inputを高速化する。

input = sys.stdin.readline

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

h = [int(i) for i in input().split()]

# dpの配列を作る。

dp = np.zeros(n, dtype=int)

# hの配列を作る。

h = np.array(h)

for i in range(1, n):

    # start は負になることはない。

    start = max(0, i-k)

    # 行列として足し算できるのでforを使う必要がない。

    dp[i] = min(dp[start: i] + np.abs(h[i] - h[start: i]))

print((dp[n-1]))
import sys



N,K=list(map(int,input().split()))

h=list(map(int,input().split()))+[0]*100000



dp=[sys.maxsize]*(N+K+10)

dp[1]=0



for i in range(1,N):

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

            dp[i+k]=min(dp[i+k],dp[i]+abs(h[i+k-1]-h[i-1]))



print((dp[N]))
import sys
import numpy as np

# inputを高速化する。
input = sys.stdin.readline
n, k = list(map(int, input().split()))
h = [int(i) for i in input().split()]
# dpの配列を作る。
dp = np.zeros(n, dtype=int)
# hの配列を作る。
h = np.array(h)
for i in range(1, n):
    # start は負になることはない。
    start = max(0, i - k)
    # 行列として足し算できるのでforを使う必要がない。
    dp[i] = min(dp[start:i] + np.abs(h[i] - h[start:i]))
print((dp[n - 1]))

import sys

N, K = list(map(int, input().split()))
h = list(map(int, input().split())) + [0] * 100000
dp = [sys.maxsize] * (N + K + 10)
dp[1] = 0
for i in range(1, N):
    for k in range(1, K + 1):
        dp[i + k] = min(dp[i + k], dp[i] + abs(h[i + k - 1] - h[i - 1]))
print((dp[N]))

-import numpy as np -# inputを高速化する。 -input = sys.stdin.readline -n, k = list(map(int, input().split())) -h = [int(i) for i in input().split()] -# dpの配列を作る。 -dp = np.zeros(n, dtype=int) -# hの配列を作る。 -h = np.array(h) -for i in range(1, n): -    # start は負になることはない。 -    start = max(0, i - k) -    # 行列として足し算できるのでforを使う必要がない。 -    dp[i] = min(dp[start:i] + np.abs(h[i] - h[start:i])) -print((dp[n - 1])) +N, K = list(map(int, input().split())) +h = list(map(int, input().split())) + [0] * 100000 +dp = [sys.maxsize] * (N + K + 10) +dp[1] = 0 +for i in range(1, N): +    for k in range(1, K + 1): +        dp[i + k] = min(dp[i + k], dp[i] + abs(h[i + k - 1] - h[i - 1])) +print((dp[N]))