/****************************************************************************

	" You can't please everyone, and you can't make everyone like you. " 
	-- Katie Couric

******************************************************************************
*                                                                            *
*                       Author : Dhiraj Govindvira                           *
*                         Date : 21-Mar-2020 ~ Saturday                      *
*                         Time : 2:58:33 PM                                  *
*                                                                            *
*****************************************************************************/

#if __has_include("D:/dhiraj/Programming/debug.h") && __has_include(<stdint.h>)
    #include "D:/dhiraj/Programming/debug.h"
#else
    #include <bits/stdc++.h>
    using namespace std;
    #define d(...) 11
#endif

// Data Type ----------------------------------------------------------------

#define ull                 unsigned long long int
#define ll                  long long int
#define ld                  long double

// Loops --------------------------------------------------------------------

#define loop(i,s,e)         for(ll i=(s); i<(e); i++)
#define rloop(i,s,e)        for(ll i=(s); i>=(e); i--)
#define iter(it,var)        for(auto it=var.begin(); it!=var.end(); it++)
#define riter(it,var)       for(auto it=var.rbegin(); it!=var.rend(); it++)

// Stl ----------------------------------------------------------------------

#define pb                  push_back
#define pf                  push_front
#define eb                  emplace_back
#define popb                pop_back
#define popf                pop_front
#define mp                  make_pair
#define mt                  make_tuple
#define ff                  first
#define ss                  second
#define vll                 vector<ll>
#define vvl                 vector<vll>
#define pll                 pair<ll,ll>
#define ub                  upper_bound
#define lb                  lower_bound
#define bs                  binary_search
#define all(x)              x.begin(),x.end()
#define allb(x)             x.begin(),x.begin()
#define rall(x)             x.rbegin(),x.rend()
#define at(ind,tup)         get<ind>(tup)

// Maths --------------------------------------------------------------------

const double PI = 2*acos(0.0);
#define gcd(a,b)            __gcd((a),(b))
#define lcm(a,b)            ((a)/(__gcd((a),(b)))*(b))
#define Log(x,b)            (log(x)/log(b))
#define iNF                 INT_MAX
#define INF                 LLONG_MAX

// Big data -----------------------------------------------------------------

const int Mod = 1E9 + 7;
#define Mul(a,b)            (((a) % Mod)*((b) % Mod)) % Mod
#define Sum(a,b)            (((a) % Mod)+((b) % Mod)) % Mod
#define Sub(a,b)            (((a) % Mod)-((b) % Mod) + Mod) % Mod
#define Div(a,b)            Mul(a,modInverse(b))

// Bit-Manipulation ---------------------------------------------------------

#define Bit(n)              bitset<n>
#define setbit(pos,n)       n |= (1LL<<pos)
#define resetbit(pos,n)     n &= (~(1LL<<pos))
#define toogle(pos,n)       n ^= (1LL<<pos)
#define atpos(pos,n)        ((n&(1LL<<pos))!=0)
#define bits(n)             (floor(log2(n)) + 1)
#define rightone(n)         (__builtin_ffs(n)-1)
#define countone(n)         (__builtin_popcountll(n))
#define parity(n)           (__builtin_parity(n))
#define counttz(n)          (__builtin_ctzll(n))
#define countlz(n)          (__builtin_clzll(n))

// Extra --------------------------------------------------------------------

#define fast                ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define scan(any)           for(auto &i:any) cin>>i;
#define print(any)          for(auto &i:any) cout<<i<<" "; nl;
#define printp(any)         for(auto &i:any) cout<<i.ff<<" "<<i.ss<<endl;
#define precise(a)          cout<<fixed<<setprecision(a)
inline  void yes()          {std::cout<<"Yes\n";}
inline  void no()           {std::cout<<"No\n";}
#define flush               std::cout.flush()
#define nl                  std::cout<<'\n'
#define endl                '\n'

// Template -----------------------------------------------------------------

template <typename T> 
inline bool inrange(T a, T l, T r) {
    return (a>=l and a<=r);
}
template <typename T, typename U> 
inline bool exist(T val, U &any) {
    return (any.find(val) != any.end());
}
// scan vector
template <typename T> 
inline istream& operator >> (istream &in, vector<T> &a) {
    for(auto &x : a) in >> x;
    return in;
}
// scan pair
template <typename T, typename U> 
inline istream& operator >> (istream &in, pair<T,U> &a) {
    in >> a.ff >> a.ss; 
    return in;
}

// Solve --------------------------------------------------------------------

void solve(ll &T)
{
    ll n, k;
    std::cin>>n>>k;

    vll a(n);
    std::cin>>a;

    vll dp(n,iNF);
    dp[0] = 0;

    loop(i,0,n)
    {
        loop(j,1,k+1)
        {
            if(i+j<n)
                dp[i+j] = min(dp[i+j],dp[i]+abs(a[i]-a[i+j]));
        }
    }
    std::cout<<dp[n-1]<<endl;
}

// Main ---------------------------------------------------------------------

int main()
{
    #ifdef Dhiraj
        freopen("D:/dhiraj/Programming/i1.txt","r",stdin);
        freopen("D:/dhiraj/Programming/o1.txt","w",stdout);
    #endif
    
    fast;
    int t = 1;
    loop(i,1,t+1)
    solve(i);
    return 0;
}

Measured memory_bytes: 1792