import java.util.*;
import java.io.*;
import java.lang.*;
class Main{
	public static int dp[]=new int[100002];
	public static int frog(int arr[],int N,int K) {
		if(N==0)
			return Main.dp[0];
		if(Main.dp[N]!=-1)
			return Main.dp[N];
		int cnt=1000000000;
		for(int i=N-1;i>Math.max(N-K-1,-1);i--) {
			cnt=Math.min(cnt,Main.frog(arr,i,K)+Math.abs(arr[N]-arr[i]));
			//System.out.println(cnt);
		}
		Main.dp[N]=cnt;
		return Main.dp[N];
	}
	public static void main(String []args) {
		for(int i=1;i<100002;i++) {
			Main.dp[i]=-1;
		}
		Scanner sc=new Scanner(System.in);
		int N=sc.nextInt();
		int K=sc.nextInt();
		int h[]=new int[N];
		for(int i=0;i<N;i++) {
			h[i]=sc.nextInt();
		}
		int x=Main.frog(h, N-1, K);
		//System.out.println(x);
		System.out.println(Main.dp[N-1]);
	}
} import java.util.*; util.* java import java.io.*; io.* java import java.lang.*; lang.* java class Main{
	public static int dp[]=new int[100002];
	public static int frog(int arr[],int N,int K) {
		if(N==0)
			return Main.dp[0];
		if(Main.dp[N]!=-1)
			return Main.dp[N];
		int cnt=1000000000;
		for(int i=N-1;i>Math.max(N-K-1,-1);i--) {
			cnt=Math.min(cnt,Main.frog(arr,i,K)+Math.abs(arr[N]-arr[i]));
			//System.out.println(cnt);
		}
		Main.dp[N]=cnt;
		return Main.dp[N];
	}
	public static void main(String []args) {
		for(int i=1;i<100002;i++) {
			Main.dp[i]=-1;
		}
		Scanner sc=new Scanner(System.in);
		int N=sc.nextInt();
		int K=sc.nextInt();
		int h[]=new int[N];
		for(int i=0;i<N;i++) {
			h[i]=sc.nextInt();
		}
		int x=Main.frog(h, N-1, K);
		//System.out.println(x);
		System.out.println(Main.dp[N-1]);
	}
} Main public static int dp[]=new int[100002]; dp new int[100002] 100002 public static int frog(int arr[],int N,int K) {
		if(N==0)
			return Main.dp[0];
		if(Main.dp[N]!=-1)
			return Main.dp[N];
		int cnt=1000000000;
		for(int i=N-1;i>Math.max(N-K-1,-1);i--) {
			cnt=Math.min(cnt,Main.frog(arr,i,K)+Math.abs(arr[N]-arr[i]));
			//System.out.println(cnt);
		}
		Main.dp[N]=cnt;
		return Main.dp[N];
	} frog {
		if(N==0)
			return Main.dp[0];
		if(Main.dp[N]!=-1)
			return Main.dp[N];
		int cnt=1000000000;
		for(int i=N-1;i>Math.max(N-K-1,-1);i--) {
			cnt=Math.min(cnt,Main.frog(arr,i,K)+Math.abs(arr[N]-arr[i]));
			//System.out.println(cnt);
		}
		Main.dp[N]=cnt;
		return Main.dp[N];
	} if(N==0)
			return Main.dp[0]; N==0 N 0 return Main.dp[0]; Main.dp[0] Main.dp Main Main.dp 0 if(Main.dp[N]!=-1)
			return Main.dp[N]; Main.dp[N]!=-1 Main.dp[N] Main.dp Main Main.dp N -1 1 return Main.dp[N]; Main.dp[N] Main.dp Main Main.dp N int cnt=1000000000; cnt 1000000000 for(int i=N-1;i>Math.max(N-K-1,-1);i--) {
			cnt=Math.min(cnt,Main.frog(arr,i,K)+Math.abs(arr[N]-arr[i]));
			//System.out.println(cnt);
		} int i=N-1; int i=N-1; i N-1 N 1 i>Math.max(N-K-1,-1) i Math.max(N-K-1,-1) Math.max Math N-K-1 N-K-1 N K 1 -1 1 i-- i-- i {
			cnt=Math.min(cnt,Main.frog(arr,i,K)+Math.abs(arr[N]-arr[i]));
			//System.out.println(cnt);
		} {
			cnt=Math.min(cnt,Main.frog(arr,i,K)+Math.abs(arr[N]-arr[i]));
			//System.out.println(cnt);
		} cnt=Math.min(cnt,Main.frog(arr,i,K)+Math.abs(arr[N]-arr[i])) cnt Math.min(cnt,Main.frog(arr,i,K)+Math.abs(arr[N]-arr[i])) Math.min Math cnt Main.frog(arr,i,K)+Math.abs(arr[N]-arr[i]) Main.frog(arr,i,K) Main.frog Main arr i K Math.abs(arr[N]-arr[i]) Math.abs Math arr[N]-arr[i] arr[N] arr N arr[i] arr i Main.dp[N]=cnt Main.dp[N] Main.dp Main Main.dp N cnt return Main.dp[N]; Main.dp[N] Main.dp Main Main.dp N int arr[] arr int N N int K K public static void main(String []args) {
		for(int i=1;i<100002;i++) {
			Main.dp[i]=-1;
		}
		Scanner sc=new Scanner(System.in);
		int N=sc.nextInt();
		int K=sc.nextInt();
		int h[]=new int[N];
		for(int i=0;i<N;i++) {
			h[i]=sc.nextInt();
		}
		int x=Main.frog(h, N-1, K);
		//System.out.println(x);
		System.out.println(Main.dp[N-1]);
	} main {
		for(int i=1;i<100002;i++) {
			Main.dp[i]=-1;
		}
		Scanner sc=new Scanner(System.in);
		int N=sc.nextInt();
		int K=sc.nextInt();
		int h[]=new int[N];
		for(int i=0;i<N;i++) {
			h[i]=sc.nextInt();
		}
		int x=Main.frog(h, N-1, K);
		//System.out.println(x);
		System.out.println(Main.dp[N-1]);
	} for(int i=1;i<100002;i++) {
			Main.dp[i]=-1;
		} int i=1; int i=1; i 1 i<100002 i 100002 i++ i++ i {
			Main.dp[i]=-1;
		} {
			Main.dp[i]=-1;
		} Main.dp[i]=-1 Main.dp[i] Main.dp Main Main.dp i -1 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 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 int x=Main.frog(h, N-1, K); x Main.frog(h, N-1, K) Main.frog Main h N-1 N 1 K System.out.println(Main.dp[N-1]) System.out.println System.out System System.out Main.dp[N-1] Main.dp Main Main.dp N-1 N 1 String []args args
import java.util.*;
import java.io.*;
import java.lang.*;
class Main{
	public static int dp[]=new int[100002];
	public static int frog(int arr[],int N,int K) {
		if(N==0)
			return Main.dp[0];
		if(Main.dp[N]!=-1)
			return Main.dp[N];
		int cnt=1000000000;
		for(int i=N-1;i>Math.max(N-K-1,-1);i--) {
			cnt=Math.min(cnt,Main.frog(arr,i,K)+Math.abs(arr[N]-arr[i]));
			//System.out.println(cnt);
		}
		Main.dp[N]=cnt;
		return Main.dp[N];
	}
	public static void main(String []args) {
		for(int i=1;i<100002;i++) {
			Main.dp[i]=-1;
		}
		Scanner sc=new Scanner(System.in);
		int N=sc.nextInt();
		int K=sc.nextInt();
		int h[]=new int[N];
		for(int i=0;i<N;i++) {
			h[i]=sc.nextInt();
		}
		int x=Main.frog(h, N-1, K);
		//System.out.println(x);
		System.out.println(Main.dp[N-1]);
	}
}