import java.util.*;
public class Main {

	public static void main(String[] args)
	{
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int k=sc.nextInt();
		int arr[]=new int[n];
		int dp[]=new int[n];
		for(int i=0;i<n;i++)
		{
			arr[i]=sc.nextInt();
		}
		Arrays.fill(dp, -1);
		int ans=rec(dp,arr,0,k);
		System.out.println(ans);
		
		//dp[0]=0;
		//dp[1]=Math.abs(arr[0]-arr[1]);
//		for(int i=1;i<n;i++)rr
//		{
//			int min=Integer.MAX_VALUE;
//			for(int j=1;j<=k&&i-j>=0;j++)
//			{
//				//System.out.println(i+" "+j);
//				int temp=dp[i-j]+Math.abs(arr[i]-arr[i-j]);
//			min=Math.min(temp, min);
//			}
//			dp[i]=min;
//			//System.out.println(dp[i]);
//		}
//		System.out.println(dp[n-1]);
	}

	private static int rec(int[] dp, int[] arr, int ind, int k) {
		// TODO Auto-generated method stub
		if(ind==arr.length-1)
		{
			return 0;
		}
		
		if(dp[ind]!=-1)
		{
			
			return dp[ind];
		}
		int n=arr.length;
		int ans=Integer.MAX_VALUE;
		for(int i=1;i<=k;i++)
		{
			if(ind+i<n)
			{
				//System.out.println(ind+" "+i);
				ans=Math.min(ans, Math.abs(arr[ind]-arr[i+ind])+rec(dp,arr,ind+i,k));
			}
		}
		dp[ind]=ans;
		return ans;
	}
} import java.util.*; util.* java public class Main {

	public static void main(String[] args)
	{
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int k=sc.nextInt();
		int arr[]=new int[n];
		int dp[]=new int[n];
		for(int i=0;i<n;i++)
		{
			arr[i]=sc.nextInt();
		}
		Arrays.fill(dp, -1);
		int ans=rec(dp,arr,0,k);
		System.out.println(ans);
		
		//dp[0]=0;
		//dp[1]=Math.abs(arr[0]-arr[1]);
//		for(int i=1;i<n;i++)rr
//		{
//			int min=Integer.MAX_VALUE;
//			for(int j=1;j<=k&&i-j>=0;j++)
//			{
//				//System.out.println(i+" "+j);
//				int temp=dp[i-j]+Math.abs(arr[i]-arr[i-j]);
//			min=Math.min(temp, min);
//			}
//			dp[i]=min;
//			//System.out.println(dp[i]);
//		}
//		System.out.println(dp[n-1]);
	}

	private static int rec(int[] dp, int[] arr, int ind, int k) {
		// TODO Auto-generated method stub
		if(ind==arr.length-1)
		{
			return 0;
		}
		
		if(dp[ind]!=-1)
		{
			
			return dp[ind];
		}
		int n=arr.length;
		int ans=Integer.MAX_VALUE;
		for(int i=1;i<=k;i++)
		{
			if(ind+i<n)
			{
				//System.out.println(ind+" "+i);
				ans=Math.min(ans, Math.abs(arr[ind]-arr[i+ind])+rec(dp,arr,ind+i,k));
			}
		}
		dp[ind]=ans;
		return ans;
	}
} Main public static void main(String[] args)
	{
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int k=sc.nextInt();
		int arr[]=new int[n];
		int dp[]=new int[n];
		for(int i=0;i<n;i++)
		{
			arr[i]=sc.nextInt();
		}
		Arrays.fill(dp, -1);
		int ans=rec(dp,arr,0,k);
		System.out.println(ans);
		
		//dp[0]=0;
		//dp[1]=Math.abs(arr[0]-arr[1]);
//		for(int i=1;i<n;i++)rr
//		{
//			int min=Integer.MAX_VALUE;
//			for(int j=1;j<=k&&i-j>=0;j++)
//			{
//				//System.out.println(i+" "+j);
//				int temp=dp[i-j]+Math.abs(arr[i]-arr[i-j]);
//			min=Math.min(temp, min);
//			}
//			dp[i]=min;
//			//System.out.println(dp[i]);
//		}
//		System.out.println(dp[n-1]);
	} main {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int k=sc.nextInt();
		int arr[]=new int[n];
		int dp[]=new int[n];
		for(int i=0;i<n;i++)
		{
			arr[i]=sc.nextInt();
		}
		Arrays.fill(dp, -1);
		int ans=rec(dp,arr,0,k);
		System.out.println(ans);
		
		//dp[0]=0;
		//dp[1]=Math.abs(arr[0]-arr[1]);
//		for(int i=1;i<n;i++)rr
//		{
//			int min=Integer.MAX_VALUE;
//			for(int j=1;j<=k&&i-j>=0;j++)
//			{
//				//System.out.println(i+" "+j);
//				int temp=dp[i-j]+Math.abs(arr[i]-arr[i-j]);
//			min=Math.min(temp, min);
//			}
//			dp[i]=min;
//			//System.out.println(dp[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 arr[]=new int[n]; arr new int[n] n int dp[]=new int[n]; dp new int[n] n for(int i=0;i<n;i++)
		{
			arr[i]=sc.nextInt();
		} int i=0; int i=0; i 0 i<n i n i++ i++ i {
			arr[i]=sc.nextInt();
		} {
			arr[i]=sc.nextInt();
		} arr[i]=sc.nextInt() arr[i] arr i sc.nextInt() sc.nextInt sc Arrays.fill(dp, -1) Arrays.fill Arrays dp -1 1 int ans=rec(dp,arr,0,k); ans rec(dp,arr,0,k) rec dp arr 0 k System.out.println(ans) System.out.println System.out System System.out ans String[] args args private static int rec(int[] dp, int[] arr, int ind, int k) {
		// TODO Auto-generated method stub
		if(ind==arr.length-1)
		{
			return 0;
		}
		
		if(dp[ind]!=-1)
		{
			
			return dp[ind];
		}
		int n=arr.length;
		int ans=Integer.MAX_VALUE;
		for(int i=1;i<=k;i++)
		{
			if(ind+i<n)
			{
				//System.out.println(ind+" "+i);
				ans=Math.min(ans, Math.abs(arr[ind]-arr[i+ind])+rec(dp,arr,ind+i,k));
			}
		}
		dp[ind]=ans;
		return ans;
	} rec {
		// TODO Auto-generated method stub
		if(ind==arr.length-1)
		{
			return 0;
		}
		
		if(dp[ind]!=-1)
		{
			
			return dp[ind];
		}
		int n=arr.length;
		int ans=Integer.MAX_VALUE;
		for(int i=1;i<=k;i++)
		{
			if(ind+i<n)
			{
				//System.out.println(ind+" "+i);
				ans=Math.min(ans, Math.abs(arr[ind]-arr[i+ind])+rec(dp,arr,ind+i,k));
			}
		}
		dp[ind]=ans;
		return ans;
	} if(ind==arr.length-1)
		{
			return 0;
		} ind==arr.length-1 ind arr.length-1 arr.length arr arr.length 1 {
			return 0;
		} return 0; 0 if(dp[ind]!=-1)
		{
			
			return dp[ind];
		} dp[ind]!=-1 dp[ind] dp ind -1 1 {
			
			return dp[ind];
		} return dp[ind]; dp[ind] dp ind int n=arr.length; n arr.length arr arr.length int ans=Integer.MAX_VALUE; ans Integer.MAX_VALUE Integer Integer.MAX_VALUE for(int i=1;i<=k;i++)
		{
			if(ind+i<n)
			{
				//System.out.println(ind+" "+i);
				ans=Math.min(ans, Math.abs(arr[ind]-arr[i+ind])+rec(dp,arr,ind+i,k));
			}
		} int i=1; int i=1; i 1 i<=k i k i++ i++ i {
			if(ind+i<n)
			{
				//System.out.println(ind+" "+i);
				ans=Math.min(ans, Math.abs(arr[ind]-arr[i+ind])+rec(dp,arr,ind+i,k));
			}
		} {
			if(ind+i<n)
			{
				//System.out.println(ind+" "+i);
				ans=Math.min(ans, Math.abs(arr[ind]-arr[i+ind])+rec(dp,arr,ind+i,k));
			}
		} if(ind+i<n)
			{
				//System.out.println(ind+" "+i);
				ans=Math.min(ans, Math.abs(arr[ind]-arr[i+ind])+rec(dp,arr,ind+i,k));
			} ind+i<n ind+i ind i n {
				//System.out.println(ind+" "+i);
				ans=Math.min(ans, Math.abs(arr[ind]-arr[i+ind])+rec(dp,arr,ind+i,k));
			} ans=Math.min(ans, Math.abs(arr[ind]-arr[i+ind])+rec(dp,arr,ind+i,k)) ans Math.min(ans, Math.abs(arr[ind]-arr[i+ind])+rec(dp,arr,ind+i,k)) Math.min Math ans Math.abs(arr[ind]-arr[i+ind])+rec(dp,arr,ind+i,k) Math.abs(arr[ind]-arr[i+ind]) Math.abs Math arr[ind]-arr[i+ind] arr[ind] arr ind arr[i+ind] arr i+ind i ind rec(dp,arr,ind+i,k) rec dp arr ind+i ind i k dp[ind]=ans dp[ind] dp ind ans return ans; ans int[] dp dp int[] arr arr int ind ind int k k public class Main {

	public static void main(String[] args)
	{
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int k=sc.nextInt();
		int arr[]=new int[n];
		int dp[]=new int[n];
		for(int i=0;i<n;i++)
		{
			arr[i]=sc.nextInt();
		}
		Arrays.fill(dp, -1);
		int ans=rec(dp,arr,0,k);
		System.out.println(ans);
		
		//dp[0]=0;
		//dp[1]=Math.abs(arr[0]-arr[1]);
//		for(int i=1;i<n;i++)rr
//		{
//			int min=Integer.MAX_VALUE;
//			for(int j=1;j<=k&&i-j>=0;j++)
//			{
//				//System.out.println(i+" "+j);
//				int temp=dp[i-j]+Math.abs(arr[i]-arr[i-j]);
//			min=Math.min(temp, min);
//			}
//			dp[i]=min;
//			//System.out.println(dp[i]);
//		}
//		System.out.println(dp[n-1]);
	}

	private static int rec(int[] dp, int[] arr, int ind, int k) {
		// TODO Auto-generated method stub
		if(ind==arr.length-1)
		{
			return 0;
		}
		
		if(dp[ind]!=-1)
		{
			
			return dp[ind];
		}
		int n=arr.length;
		int ans=Integer.MAX_VALUE;
		for(int i=1;i<=k;i++)
		{
			if(ind+i<n)
			{
				//System.out.println(ind+" "+i);
				ans=Math.min(ans, Math.abs(arr[ind]-arr[i+ind])+rec(dp,arr,ind+i,k));
			}
		}
		dp[ind]=ans;
		return ans;
	}
} public class Main {

	public static void main(String[] args)
	{
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int k=sc.nextInt();
		int arr[]=new int[n];
		int dp[]=new int[n];
		for(int i=0;i<n;i++)
		{
			arr[i]=sc.nextInt();
		}
		Arrays.fill(dp, -1);
		int ans=rec(dp,arr,0,k);
		System.out.println(ans);
		
		//dp[0]=0;
		//dp[1]=Math.abs(arr[0]-arr[1]);
//		for(int i=1;i<n;i++)rr
//		{
//			int min=Integer.MAX_VALUE;
//			for(int j=1;j<=k&&i-j>=0;j++)
//			{
//				//System.out.println(i+" "+j);
//				int temp=dp[i-j]+Math.abs(arr[i]-arr[i-j]);
//			min=Math.min(temp, min);
//			}
//			dp[i]=min;
//			//System.out.println(dp[i]);
//		}
//		System.out.println(dp[n-1]);
	}

	private static int rec(int[] dp, int[] arr, int ind, int k) {
		// TODO Auto-generated method stub
		if(ind==arr.length-1)
		{
			return 0;
		}
		
		if(dp[ind]!=-1)
		{
			
			return dp[ind];
		}
		int n=arr.length;
		int ans=Integer.MAX_VALUE;
		for(int i=1;i<=k;i++)
		{
			if(ind+i<n)
			{
				//System.out.println(ind+" "+i);
				ans=Math.min(ans, Math.abs(arr[ind]-arr[i+ind])+rec(dp,arr,ind+i,k));
			}
		}
		dp[ind]=ans;
		return ans;
	}
} Main
import java.util.*;
public class Main {

	public static void main(String[] args)
	{
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int k=sc.nextInt();
		int arr[]=new int[n];
		int dp[]=new int[n];
		for(int i=0;i<n;i++)
		{
			arr[i]=sc.nextInt();
		}
		Arrays.fill(dp, -1);
		int ans=rec(dp,arr,0,k);
		System.out.println(ans);
		
		//dp[0]=0;
		//dp[1]=Math.abs(arr[0]-arr[1]);
//		for(int i=1;i<n;i++)rr
//		{
//			int min=Integer.MAX_VALUE;
//			for(int j=1;j<=k&&i-j>=0;j++)
//			{
//				//System.out.println(i+" "+j);
//				int temp=dp[i-j]+Math.abs(arr[i]-arr[i-j]);
//			min=Math.min(temp, min);
//			}
//			dp[i]=min;
//			//System.out.println(dp[i]);
//		}
//		System.out.println(dp[n-1]);
	}

	private static int rec(int[] dp, int[] arr, int ind, int k) {
		// TODO Auto-generated method stub
		if(ind==arr.length-1)
		{
			return 0;
		}
		
		if(dp[ind]!=-1)
		{
			
			return dp[ind];
		}
		int n=arr.length;
		int ans=Integer.MAX_VALUE;
		for(int i=1;i<=k;i++)
		{
			if(ind+i<n)
			{
				//System.out.println(ind+" "+i);
				ans=Math.min(ans, Math.abs(arr[ind]-arr[i+ind])+rec(dp,arr,ind+i,k));
			}
		}
		dp[ind]=ans;
		return ans;
	}
}
