import java.util.Arrays;
import java.util.Scanner;

public class Main {

	static long mod = 1000000007;
	static long INF = Long.MAX_VALUE;

	public static void main(String[] args) {
		// AtCoder_B
		Scanner sc = new Scanner(System.in);
		// 整数の入力
		int N = sc.nextInt();
		int K = sc.nextInt();
		int H[] = new int[N];
		long DP[] = new long[N];
		Arrays.fill(H, 0);
		Arrays.fill(DP, INF);

		for(int i=0; i<N; i++) {
			H[i] = sc.nextInt();
		}
	    // Scannerクラスのインスタンスをクローズ
		sc.close();

		DP[0] = 0;

		for(int now=1; now<N; now++) {
			for(int i=1; i<=K; i++) {
				if(now < i) break;
				DP[now] = Math.min(DP[now], DP[now-i]+Math.abs(H[now]-H[now-i]));
			}
		}

		// 出力
		System.out.println(DP[N-1]);
	}
} import java.util.Arrays; Arrays java.util import java.util.Scanner; Scanner java.util public class Main {

	static long mod = 1000000007;
	static long INF = Long.MAX_VALUE;

	public static void main(String[] args) {
		// AtCoder_B
		Scanner sc = new Scanner(System.in);
		// 整数の入力
		int N = sc.nextInt();
		int K = sc.nextInt();
		int H[] = new int[N];
		long DP[] = new long[N];
		Arrays.fill(H, 0);
		Arrays.fill(DP, INF);

		for(int i=0; i<N; i++) {
			H[i] = sc.nextInt();
		}
	    // Scannerクラスのインスタンスをクローズ
		sc.close();

		DP[0] = 0;

		for(int now=1; now<N; now++) {
			for(int i=1; i<=K; i++) {
				if(now < i) break;
				DP[now] = Math.min(DP[now], DP[now-i]+Math.abs(H[now]-H[now-i]));
			}
		}

		// 出力
		System.out.println(DP[N-1]);
	}
} Main static long mod = 1000000007; mod 1000000007 static long INF = Long.MAX_VALUE; INF Long.MAX_VALUE Long Long.MAX_VALUE public static void main(String[] args) {
		// AtCoder_B
		Scanner sc = new Scanner(System.in);
		// 整数の入力
		int N = sc.nextInt();
		int K = sc.nextInt();
		int H[] = new int[N];
		long DP[] = new long[N];
		Arrays.fill(H, 0);
		Arrays.fill(DP, INF);

		for(int i=0; i<N; i++) {
			H[i] = sc.nextInt();
		}
	    // Scannerクラスのインスタンスをクローズ
		sc.close();

		DP[0] = 0;

		for(int now=1; now<N; now++) {
			for(int i=1; i<=K; i++) {
				if(now < i) break;
				DP[now] = Math.min(DP[now], DP[now-i]+Math.abs(H[now]-H[now-i]));
			}
		}

		// 出力
		System.out.println(DP[N-1]);
	} main {
		// AtCoder_B
		Scanner sc = new Scanner(System.in);
		// 整数の入力
		int N = sc.nextInt();
		int K = sc.nextInt();
		int H[] = new int[N];
		long DP[] = new long[N];
		Arrays.fill(H, 0);
		Arrays.fill(DP, INF);

		for(int i=0; i<N; i++) {
			H[i] = sc.nextInt();
		}
	    // Scannerクラスのインスタンスをクローズ
		sc.close();

		DP[0] = 0;

		for(int now=1; now<N; now++) {
			for(int i=1; i<=K; i++) {
				if(now < i) break;
				DP[now] = Math.min(DP[now], DP[now-i]+Math.abs(H[now]-H[now-i]));
			}
		}

		// 出力
		System.out.println(DP[N-1]);
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int N = sc.nextInt(); N sc.nextInt() sc.nextInt sc int K = sc.nextInt(); K sc.nextInt() sc.nextInt sc int H[] = new int[N]; H new int[N] N long DP[] = new long[N]; DP new long[N] N Arrays.fill(H, 0) Arrays.fill Arrays H 0 Arrays.fill(DP, INF) Arrays.fill Arrays DP INF for(int i=0; i<N; i++) {
			H[i] = sc.nextInt();
		} int i=0; int i=0; i 0 i<N i N i++ i++ i {
			H[i] = sc.nextInt();
		} {
			H[i] = sc.nextInt();
		} H[i] = sc.nextInt() H[i] H i sc.nextInt() sc.nextInt sc sc.close() sc.close sc DP[0] = 0 DP[0] DP 0 0 for(int now=1; now<N; now++) {
			for(int i=1; i<=K; i++) {
				if(now < i) break;
				DP[now] = Math.min(DP[now], DP[now-i]+Math.abs(H[now]-H[now-i]));
			}
		} int now=1; int now=1; now 1 now<N now N now++ now++ now {
			for(int i=1; i<=K; i++) {
				if(now < i) break;
				DP[now] = Math.min(DP[now], DP[now-i]+Math.abs(H[now]-H[now-i]));
			}
		} {
			for(int i=1; i<=K; i++) {
				if(now < i) break;
				DP[now] = Math.min(DP[now], DP[now-i]+Math.abs(H[now]-H[now-i]));
			}
		} for(int i=1; i<=K; i++) {
				if(now < i) break;
				DP[now] = Math.min(DP[now], DP[now-i]+Math.abs(H[now]-H[now-i]));
			} int i=1; int i=1; i 1 i<=K i K i++ i++ i {
				if(now < i) break;
				DP[now] = Math.min(DP[now], DP[now-i]+Math.abs(H[now]-H[now-i]));
			} {
				if(now < i) break;
				DP[now] = Math.min(DP[now], DP[now-i]+Math.abs(H[now]-H[now-i]));
			} if(now < i) break; now < i now i break; DP[now] = Math.min(DP[now], DP[now-i]+Math.abs(H[now]-H[now-i])) DP[now] DP now Math.min(DP[now], DP[now-i]+Math.abs(H[now]-H[now-i])) Math.min Math DP[now] DP now DP[now-i]+Math.abs(H[now]-H[now-i]) DP[now-i] DP now-i now i Math.abs(H[now]-H[now-i]) Math.abs Math H[now]-H[now-i] H[now] H now H[now-i] H now-i now i System.out.println(DP[N-1]) System.out.println System.out System System.out DP[N-1] DP N-1 N 1 String[] args args public class Main {

	static long mod = 1000000007;
	static long INF = Long.MAX_VALUE;

	public static void main(String[] args) {
		// AtCoder_B
		Scanner sc = new Scanner(System.in);
		// 整数の入力
		int N = sc.nextInt();
		int K = sc.nextInt();
		int H[] = new int[N];
		long DP[] = new long[N];
		Arrays.fill(H, 0);
		Arrays.fill(DP, INF);

		for(int i=0; i<N; i++) {
			H[i] = sc.nextInt();
		}
	    // Scannerクラスのインスタンスをクローズ
		sc.close();

		DP[0] = 0;

		for(int now=1; now<N; now++) {
			for(int i=1; i<=K; i++) {
				if(now < i) break;
				DP[now] = Math.min(DP[now], DP[now-i]+Math.abs(H[now]-H[now-i]));
			}
		}

		// 出力
		System.out.println(DP[N-1]);
	}
} public class Main {

	static long mod = 1000000007;
	static long INF = Long.MAX_VALUE;

	public static void main(String[] args) {
		// AtCoder_B
		Scanner sc = new Scanner(System.in);
		// 整数の入力
		int N = sc.nextInt();
		int K = sc.nextInt();
		int H[] = new int[N];
		long DP[] = new long[N];
		Arrays.fill(H, 0);
		Arrays.fill(DP, INF);

		for(int i=0; i<N; i++) {
			H[i] = sc.nextInt();
		}
	    // Scannerクラスのインスタンスをクローズ
		sc.close();

		DP[0] = 0;

		for(int now=1; now<N; now++) {
			for(int i=1; i<=K; i++) {
				if(now < i) break;
				DP[now] = Math.min(DP[now], DP[now-i]+Math.abs(H[now]-H[now-i]));
			}
		}

		// 出力
		System.out.println(DP[N-1]);
	}
} Main
import java.util.Arrays;
import java.util.Scanner;

public class Main {

	static long mod = 1000000007;
	static long INF = Long.MAX_VALUE;

	public static void main(String[] args) {
		// AtCoder_B
		Scanner sc = new Scanner(System.in);
		// 整数の入力
		int N = sc.nextInt();
		int K = sc.nextInt();
		int H[] = new int[N];
		long DP[] = new long[N];
		Arrays.fill(H, 0);
		Arrays.fill(DP, INF);

		for(int i=0; i<N; i++) {
			H[i] = sc.nextInt();
		}
	    // Scannerクラスのインスタンスをクローズ
		sc.close();

		DP[0] = 0;

		for(int now=1; now<N; now++) {
			for(int i=1; i<=K; i++) {
				if(now < i) break;
				DP[now] = Math.min(DP[now], DP[now-i]+Math.abs(H[now]-H[now-i]));
			}
		}

		// 出力
		System.out.println(DP[N-1]);
	}
}
