Buggy python submission (verdict: Time Limit Exceeded):
n, k = map(int,input().split())

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

INF = 1e12

dp = [INF] * n
dp[0] = 0
dp[1] = abs(pedras[1] - pedras[0])

for i in range(n):#i == pedra atual
    for j in range(i+1, i + k+ 1):
        if j < n:
            dp[j] = min(dp[j], dp[i] + abs(pedras[i] - pedras[j]))

print(dp[n-1])


Fixed submission:
n,k = map(int,input().split())

INF = 1e12

dp = [INF] * n

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

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

for i in range(2,n):#Ele vai começar a contar cada pedra a partir da terceira
    pulo = 0
    for j in range(i-1,-1,-1):#O pulo começar pequeno, tendo tamanho 1 e indo até o máximo k
        pulo += 1
        if pulo > k:
            break
        else:
            dp[i] = min(dp[i], dp[j] + abs(h[j] - h[i]))
#No final ele vai armazenar o pulo de menor custo, afinal não importa o tamanho do pulo e sim seu custo, sendo assim,
#Temos que calcular os custos de todos os possiveis pulos até a pedra atual.

print(dp[n-1])

Buggy python submission (verdict: Time Limit Exceeded):
n, k = map(int,input().split())

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

INF = 1e12

dp = [INF] * n

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

for i in range(2,n):
    pulo = 0
    for j in range(i-1,-1,-1):
        pulo += 1
        if pulo > k:
            break
        else:
            dp[i] = min(dp[i], dp[j] + abs(pedras[i] - pedras[j]))


print(dp[n-1])


Fixed submission:
n,k = map(int,input().split())

INF = 1e12

dp = [INF] * n

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

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

for i in range(2,n):#Ele vai começar a contar cada pedra a partir da terceira
    pulo = 0
    for j in range(i-1,-1,-1):#O pulo começar pequeno, tendo tamanho 1 e indo até o máximo k
        pulo += 1
        if pulo > k:
            break
        else:
            dp[i] = min(dp[i], dp[j] + abs(h[j] - h[i]))
#No final ele vai armazenar o pulo de menor custo, afinal não importa o tamanho do pulo e sim seu custo, sendo assim,
#Temos que calcular os custos de todos os possiveis pulos até a pedra atual.

print(dp[n-1])

Buggy python submission (verdict: Time Limit Exceeded):
n, k = map(int,input().split())

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

dp = [1000000000] * n

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

for i in range(2,n):
    pulo = 0
    for j in range(i-1,-1,-1):
        pulo += 1
        if pulo > k:
            break
        else:
            dp[i] = min(dp[i], dp[j] + abs(pedras[i] - pedras[j]))


print(dp[n-1])


Fixed submission:
n,k = map(int,input().split())

INF = 1e12

dp = [INF] * n

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

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

for i in range(2,n):#Ele vai começar a contar cada pedra a partir da terceira
    pulo = 0
    for j in range(i-1,-1,-1):#O pulo começar pequeno, tendo tamanho 1 e indo até o máximo k
        pulo += 1
        if pulo > k:
            break
        else:
            dp[i] = min(dp[i], dp[j] + abs(h[j] - h[i]))
#No final ele vai armazenar o pulo de menor custo, afinal não importa o tamanho do pulo e sim seu custo, sendo assim,
#Temos que calcular os custos de todos os possiveis pulos até a pedra atual.

print(dp[n-1])