# @oj:atcoder

# @id: hitwanyang

# @email: 296866643@qq.com

# @date: 2020-04-20 10:31

# @url:https://atcoder.jp/contests/dp/tasks/dp_b

import sys

def input():

    return sys.stdin.readline().strip()



def main():

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

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

    n=nk[0]

    k=nk[1]

    dp=[10**9]*n

    dp[0]=0

    dp[1]=abs(h[1]-h[0])



    for i in range(2,n):

        dp[i]=min(dp[j]+abs(h[i]-h[j]) for j in range(max(0,i-k),i))

        # for j in range(max(0,i-k),i):

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



    print((dp[-1]))



if __name__ == "__main__":

    main()
import os

import sys

from io import BytesIO, IOBase

# region fastio



BUFSIZE = 8192



class FastIO(IOBase):

    newlines = 0



    def __init__(self, file):

        self._fd = file.fileno()

        self.buffer = BytesIO()

        self.writable = "x" in file.mode or "r" not in file.mode

        self.write = self.buffer.write if self.writable else None



    def read(self):

        while True:

            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))

            if not b:

                break

            ptr = self.buffer.tell()

            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)

        self.newlines = 0

        return self.buffer.read()



    def readline(self):

        while self.newlines == 0:

            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))

            self.newlines = b.count(b"\n") + (not b)

            ptr = self.buffer.tell()

            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)

        self.newlines -= 1

        return self.buffer.readline()



    def flush(self):

        if self.writable:

            os.write(self._fd, self.buffer.getvalue())

            self.buffer.truncate(0), self.buffer.seek(0)





class IOWrapper(IOBase):

    def __init__(self, file):

        self.buffer = FastIO(file)

        self.flush = self.buffer.flush

        self.writable = self.buffer.writable

        self.write = lambda s: self.buffer.write(s.encode("ascii"))

        self.read = lambda: self.buffer.read().decode("ascii")

        self.readline = lambda: self.buffer.readline().decode("ascii")





sys.stdin, sys.stdout = IOWrapper(sys.stdin), IOWrapper(sys.stdout)

input = lambda: sys.stdin.readline().rstrip("\r\n")





# ------------------------------





def main():

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

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

    n=nk[0]

    k=nk[1]

    dp=[10**9]*n

    dp[0]=0

    dp[1]=abs(h[1]-h[0])



    for i in range(2,n):

        # dp[i]=min(dp[j]+abs(h[i]-h[j]) for j in range(max(0,i-k),i))

        for j in range(max(0,i-k),i):

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



    print((dp[-1]))



if __name__ == "__main__":

    main()



# @oj:atcoder
# @id: hitwanyang
# @email: 296866643@qq.com
# @date: 2020-04-20 10:31
# @url:https://atcoder.jp/contests/dp/tasks/dp_b
import sys


def input():
    return sys.stdin.readline().strip()


def main():
    nk = list(map(int, input().split()))
    h = list(map(int, input().split()))
    n = nk[0]
    k = nk[1]
    dp = [10**9] * n
    dp[0] = 0
    dp[1] = abs(h[1] - h[0])
    for i in range(2, n):
        dp[i] = min(dp[j] + abs(h[i] - h[j]) for j in range(max(0, i - k), i))
        # for j in range(max(0,i-k),i):
        #     dp[i]=min(dp[j]+abs(h[i]-h[j]),dp[i])
    print((dp[-1]))


if __name__ == "__main__":
    main()

import os
import sys
from io import BytesIO, IOBase

# region fastio
BUFSIZE = 8192


class FastIO(IOBase):
    newlines = 0

    def __init__(self, file):
        self._fd = file.fileno()
        self.buffer = BytesIO()
        self.writable = "x" in file.mode or "r" not in file.mode
        self.write = self.buffer.write if self.writable else None

    def read(self):
        while True:
            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
            if not b:
                break
            ptr = self.buffer.tell()
            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
        self.newlines = 0
        return self.buffer.read()

    def readline(self):
        while self.newlines == 0:
            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
            self.newlines = b.count(b"\n") + (not b)
            ptr = self.buffer.tell()
            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
        self.newlines -= 1
        return self.buffer.readline()

    def flush(self):
        if self.writable:
            os.write(self._fd, self.buffer.getvalue())
            self.buffer.truncate(0), self.buffer.seek(0)


class IOWrapper(IOBase):
    def __init__(self, file):
        self.buffer = FastIO(file)
        self.flush = self.buffer.flush
        self.writable = self.buffer.writable
        self.write = lambda s: self.buffer.write(s.encode("ascii"))
        self.read = lambda: self.buffer.read().decode("ascii")
        self.readline = lambda: self.buffer.readline().decode("ascii")


sys.stdin, sys.stdout = IOWrapper(sys.stdin), IOWrapper(sys.stdout)
input = lambda: sys.stdin.readline().rstrip("\r\n")
# ------------------------------
def main():
    nk = list(map(int, input().split()))
    h = list(map(int, input().split()))
    n = nk[0]
    k = nk[1]
    dp = [10**9] * n
    dp[0] = 0
    dp[1] = abs(h[1] - h[0])
    for i in range(2, n):
        # dp[i]=min(dp[j]+abs(h[i]-h[j]) for j in range(max(0,i-k),i))
        for j in range(max(0, i - k), i):
            dp[i] = min(dp[j] + abs(h[i] - h[j]), dp[i])
    print((dp[-1]))


if __name__ == "__main__":
    main()

-# @oj:atcoder -# @id: hitwanyang -# @email: 296866643@qq.com -# @date: 2020-04-20 10:31 -# @url:https://atcoder.jp/contests/dp/tasks/dp_b +import os +from io import BytesIO, IOBase + +# region fastio +BUFSIZE = 8192 -def input(): -    return sys.stdin.readline().strip() +class FastIO(IOBase): +    newlines = 0 + +    def __init__(self, file): +        self._fd = file.fileno() +        self.buffer = BytesIO() +        self.writable = "x" in file.mode or "r" not in file.mode +        self.write = self.buffer.write if self.writable else None + +    def read(self): +        while True: +            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE)) +            if not b: +                break +            ptr = self.buffer.tell() +            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr) +        self.newlines = 0 +        return self.buffer.read() + +    def readline(self): +        while self.newlines == 0: +            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE)) +            self.newlines = b.count(b"\n") + (not b) +            ptr = self.buffer.tell() +            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr) +        self.newlines -= 1 +        return self.buffer.readline() + +    def flush(self): +        if self.writable: +            os.write(self._fd, self.buffer.getvalue()) +            self.buffer.truncate(0), self.buffer.seek(0) +class IOWrapper(IOBase): +    def __init__(self, file): +        self.buffer = FastIO(file) +        self.flush = self.buffer.flush +        self.writable = self.buffer.writable +        self.write = lambda s: self.buffer.write(s.encode("ascii")) +        self.read = lambda: self.buffer.read().decode("ascii") +        self.readline = lambda: self.buffer.readline().decode("ascii") + + +sys.stdin, sys.stdout = IOWrapper(sys.stdin), IOWrapper(sys.stdout) +input = lambda: sys.stdin.readline().rstrip("\r\n") -        dp[i] = min(dp[j] + abs(h[i] - h[j]) for j in range(max(0, i - k), i)) -        # for j in range(max(0,i-k),i): -        #     dp[i]=min(dp[j]+abs(h[i]-h[j]),dp[i]) +        # dp[i]=min(dp[j]+abs(h[i]-h[j]) for j in range(max(0,i-k),i)) +        for j in range(max(0, i - k), i): +            dp[i] = min(dp[j] + abs(h[i] - h[j]), dp[i])