import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner; 
import java.util.StringTokenizer; 
  
public class Main
{ 
    static class FastReader 
    { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() 
        { 
            br = new BufferedReader(new
                     InputStreamReader(System.in)); 
        } 
  
        String next() 
        { 
            while (st == null || !st.hasMoreElements()) 
            { 
                try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } 
  
        int nextInt() 
        { 
            return Integer.parseInt(next()); 
        } 
  
        long nextLong() 
        { 
            return Long.parseLong(next()); 
        } 
  
        double nextDouble() 
        { 
            return Double.parseDouble(next()); 
        } 
  
        String nextLine() 
        { 
            String str = ""; 
            try
            { 
                str = br.readLine(); 
            } 
            catch (IOException e) 
            { 
                e.printStackTrace(); 
            } 
            return str; 
        } 
    } 
  
    public static void main(String[] args) 
    { 
        FastReader fr = new FastReader(); 
        
        int N = fr.nextInt();
        int K = fr.nextInt();
        
        int[] dp = new int[N];
        Arrays.fill(dp, (int)2e9); dp[0] = 0;
        
        int[] h = new int[N];
        
        for(int i = 0; i < N; i++) {
        	h[i] = fr.nextInt();
        }
        
        for(int i = 0; i < N; i++) {
        	for (int j = 1; j <= K; j++) {
        		if (i + j < N) {
        			dp[i+j] = Math.min(dp[i+j], dp[i] + Math.abs(h[i] - h[i+j]));
        		}
        	}
        }
        
        System.out.println(dp[N-1]);
        
        
        
    }
} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io import java.util.Arrays; Arrays java.util import java.util.Scanner; Scanner java.util import java.util.StringTokenizer; StringTokenizer java.util public class Main
{ 
    static class FastReader 
    { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() 
        { 
            br = new BufferedReader(new
                     InputStreamReader(System.in)); 
        } 
  
        String next() 
        { 
            while (st == null || !st.hasMoreElements()) 
            { 
                try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } 
  
        int nextInt() 
        { 
            return Integer.parseInt(next()); 
        } 
  
        long nextLong() 
        { 
            return Long.parseLong(next()); 
        } 
  
        double nextDouble() 
        { 
            return Double.parseDouble(next()); 
        } 
  
        String nextLine() 
        { 
            String str = ""; 
            try
            { 
                str = br.readLine(); 
            } 
            catch (IOException e) 
            { 
                e.printStackTrace(); 
            } 
            return str; 
        } 
    } 
  
    public static void main(String[] args) 
    { 
        FastReader fr = new FastReader(); 
        
        int N = fr.nextInt();
        int K = fr.nextInt();
        
        int[] dp = new int[N];
        Arrays.fill(dp, (int)2e9); dp[0] = 0;
        
        int[] h = new int[N];
        
        for(int i = 0; i < N; i++) {
        	h[i] = fr.nextInt();
        }
        
        for(int i = 0; i < N; i++) {
        	for (int j = 1; j <= K; j++) {
        		if (i + j < N) {
        			dp[i+j] = Math.min(dp[i+j], dp[i] + Math.abs(h[i] - h[i+j]));
        		}
        	}
        }
        
        System.out.println(dp[N-1]);
        
        
        
    }
} Main public static void main(String[] args) 
    { 
        FastReader fr = new FastReader(); 
        
        int N = fr.nextInt();
        int K = fr.nextInt();
        
        int[] dp = new int[N];
        Arrays.fill(dp, (int)2e9); dp[0] = 0;
        
        int[] h = new int[N];
        
        for(int i = 0; i < N; i++) {
        	h[i] = fr.nextInt();
        }
        
        for(int i = 0; i < N; i++) {
        	for (int j = 1; j <= K; j++) {
        		if (i + j < N) {
        			dp[i+j] = Math.min(dp[i+j], dp[i] + Math.abs(h[i] - h[i+j]));
        		}
        	}
        }
        
        System.out.println(dp[N-1]);
        
        
        
    } main { 
        FastReader fr = new FastReader(); 
        
        int N = fr.nextInt();
        int K = fr.nextInt();
        
        int[] dp = new int[N];
        Arrays.fill(dp, (int)2e9); dp[0] = 0;
        
        int[] h = new int[N];
        
        for(int i = 0; i < N; i++) {
        	h[i] = fr.nextInt();
        }
        
        for(int i = 0; i < N; i++) {
        	for (int j = 1; j <= K; j++) {
        		if (i + j < N) {
        			dp[i+j] = Math.min(dp[i+j], dp[i] + Math.abs(h[i] - h[i+j]));
        		}
        	}
        }
        
        System.out.println(dp[N-1]);
        
        
        
    } FastReader fr = new FastReader(); fr new FastReader() int N = fr.nextInt(); N fr.nextInt() fr.nextInt fr int K = fr.nextInt(); K fr.nextInt() fr.nextInt fr int[] dp = new int[N]; dp new int[N] N Arrays.fill(dp, (int)2e9) Arrays.fill Arrays dp (int)2e9 dp[0] = 0 dp[0] dp 0 0 int[] h = new int[N]; h new int[N] N for(int i = 0; i < N; i++) {
        	h[i] = fr.nextInt();
        } int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
        	h[i] = fr.nextInt();
        } {
        	h[i] = fr.nextInt();
        } h[i] = fr.nextInt() h[i] h i fr.nextInt() fr.nextInt fr for(int i = 0; i < N; i++) {
        	for (int j = 1; j <= K; j++) {
        		if (i + j < N) {
        			dp[i+j] = Math.min(dp[i+j], dp[i] + Math.abs(h[i] - h[i+j]));
        		}
        	}
        } int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
        	for (int j = 1; j <= K; j++) {
        		if (i + j < N) {
        			dp[i+j] = Math.min(dp[i+j], dp[i] + Math.abs(h[i] - h[i+j]));
        		}
        	}
        } {
        	for (int j = 1; j <= K; j++) {
        		if (i + j < N) {
        			dp[i+j] = Math.min(dp[i+j], dp[i] + Math.abs(h[i] - h[i+j]));
        		}
        	}
        } for (int j = 1; j <= K; j++) {
        		if (i + j < N) {
        			dp[i+j] = Math.min(dp[i+j], dp[i] + Math.abs(h[i] - h[i+j]));
        		}
        	} int j = 1; int j = 1; j 1 j <= K j K j++ j++ j {
        		if (i + j < N) {
        			dp[i+j] = Math.min(dp[i+j], dp[i] + Math.abs(h[i] - h[i+j]));
        		}
        	} {
        		if (i + j < N) {
        			dp[i+j] = Math.min(dp[i+j], dp[i] + Math.abs(h[i] - h[i+j]));
        		}
        	} if (i + j < N) {
        			dp[i+j] = Math.min(dp[i+j], dp[i] + Math.abs(h[i] - h[i+j]));
        		} i + j < N i + j i j N {
        			dp[i+j] = Math.min(dp[i+j], dp[i] + Math.abs(h[i] - h[i+j]));
        		} dp[i+j] = Math.min(dp[i+j], dp[i] + Math.abs(h[i] - h[i+j])) dp[i+j] dp i+j i j Math.min(dp[i+j], dp[i] + Math.abs(h[i] - h[i+j])) Math.min Math dp[i+j] dp i+j i j dp[i] + Math.abs(h[i] - h[i+j]) dp[i] dp i Math.abs(h[i] - h[i+j]) Math.abs Math h[i] - h[i+j] h[i] h i h[i+j] h i+j i j 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 static class FastReader 
    { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() 
        { 
            br = new BufferedReader(new
                     InputStreamReader(System.in)); 
        } 
  
        String next() 
        { 
            while (st == null || !st.hasMoreElements()) 
            { 
                try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } 
  
        int nextInt() 
        { 
            return Integer.parseInt(next()); 
        } 
  
        long nextLong() 
        { 
            return Long.parseLong(next()); 
        } 
  
        double nextDouble() 
        { 
            return Double.parseDouble(next()); 
        } 
  
        String nextLine() 
        { 
            String str = ""; 
            try
            { 
                str = br.readLine(); 
            } 
            catch (IOException e) 
            { 
                e.printStackTrace(); 
            } 
            return str; 
        } 
    } FastReader BufferedReader br; br StringTokenizer st; st public FastReader() 
        { 
            br = new BufferedReader(new
                     InputStreamReader(System.in)); 
        } FastReader { 
            br = new BufferedReader(new
                     InputStreamReader(System.in)); 
        } br = new BufferedReader(new
                     InputStreamReader(System.in)) br new BufferedReader(new
                     InputStreamReader(System.in)) String next() 
        { 
            while (st == null || !st.hasMoreElements()) 
            { 
                try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } next { 
            while (st == null || !st.hasMoreElements()) 
            { 
                try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } while (st == null || !st.hasMoreElements()) 
            { 
                try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } 
            } st == null || !st.hasMoreElements() st == null st null !st.hasMoreElements() st.hasMoreElements() st.hasMoreElements st { 
                try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } 
            } try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } IOException  e { 
                    e.printStackTrace(); 
                } e.printStackTrace() e.printStackTrace e { 
                    st = new StringTokenizer(br.readLine()); 
                } st = new StringTokenizer(br.readLine()) st new StringTokenizer(br.readLine()) return st.nextToken(); st.nextToken() st.nextToken st int nextInt() 
        { 
            return Integer.parseInt(next()); 
        } nextInt { 
            return Integer.parseInt(next()); 
        } return Integer.parseInt(next()); Integer.parseInt(next()) Integer.parseInt Integer next() next long nextLong() 
        { 
            return Long.parseLong(next()); 
        } nextLong { 
            return Long.parseLong(next()); 
        } return Long.parseLong(next()); Long.parseLong(next()) Long.parseLong Long next() next double nextDouble() 
        { 
            return Double.parseDouble(next()); 
        } nextDouble { 
            return Double.parseDouble(next()); 
        } return Double.parseDouble(next()); Double.parseDouble(next()) Double.parseDouble Double next() next String nextLine() 
        { 
            String str = ""; 
            try
            { 
                str = br.readLine(); 
            } 
            catch (IOException e) 
            { 
                e.printStackTrace(); 
            } 
            return str; 
        } nextLine { 
            String str = ""; 
            try
            { 
                str = br.readLine(); 
            } 
            catch (IOException e) 
            { 
                e.printStackTrace(); 
            } 
            return str; 
        } String str = ""; str "" try
            { 
                str = br.readLine(); 
            } 
            catch (IOException e) 
            { 
                e.printStackTrace(); 
            } catch (IOException e) 
            { 
                e.printStackTrace(); 
            } IOException e { 
                e.printStackTrace(); 
            } e.printStackTrace() e.printStackTrace e { 
                str = br.readLine(); 
            } str = br.readLine() str br.readLine() br.readLine br return str; str public class Main
{ 
    static class FastReader 
    { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() 
        { 
            br = new BufferedReader(new
                     InputStreamReader(System.in)); 
        } 
  
        String next() 
        { 
            while (st == null || !st.hasMoreElements()) 
            { 
                try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } 
  
        int nextInt() 
        { 
            return Integer.parseInt(next()); 
        } 
  
        long nextLong() 
        { 
            return Long.parseLong(next()); 
        } 
  
        double nextDouble() 
        { 
            return Double.parseDouble(next()); 
        } 
  
        String nextLine() 
        { 
            String str = ""; 
            try
            { 
                str = br.readLine(); 
            } 
            catch (IOException e) 
            { 
                e.printStackTrace(); 
            } 
            return str; 
        } 
    } 
  
    public static void main(String[] args) 
    { 
        FastReader fr = new FastReader(); 
        
        int N = fr.nextInt();
        int K = fr.nextInt();
        
        int[] dp = new int[N];
        Arrays.fill(dp, (int)2e9); dp[0] = 0;
        
        int[] h = new int[N];
        
        for(int i = 0; i < N; i++) {
        	h[i] = fr.nextInt();
        }
        
        for(int i = 0; i < N; i++) {
        	for (int j = 1; j <= K; j++) {
        		if (i + j < N) {
        			dp[i+j] = Math.min(dp[i+j], dp[i] + Math.abs(h[i] - h[i+j]));
        		}
        	}
        }
        
        System.out.println(dp[N-1]);
        
        
        
    }
} public class Main
{ 
    static class FastReader 
    { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() 
        { 
            br = new BufferedReader(new
                     InputStreamReader(System.in)); 
        } 
  
        String next() 
        { 
            while (st == null || !st.hasMoreElements()) 
            { 
                try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } 
  
        int nextInt() 
        { 
            return Integer.parseInt(next()); 
        } 
  
        long nextLong() 
        { 
            return Long.parseLong(next()); 
        } 
  
        double nextDouble() 
        { 
            return Double.parseDouble(next()); 
        } 
  
        String nextLine() 
        { 
            String str = ""; 
            try
            { 
                str = br.readLine(); 
            } 
            catch (IOException e) 
            { 
                e.printStackTrace(); 
            } 
            return str; 
        } 
    } 
  
    public static void main(String[] args) 
    { 
        FastReader fr = new FastReader(); 
        
        int N = fr.nextInt();
        int K = fr.nextInt();
        
        int[] dp = new int[N];
        Arrays.fill(dp, (int)2e9); dp[0] = 0;
        
        int[] h = new int[N];
        
        for(int i = 0; i < N; i++) {
        	h[i] = fr.nextInt();
        }
        
        for(int i = 0; i < N; i++) {
        	for (int j = 1; j <= K; j++) {
        		if (i + j < N) {
        			dp[i+j] = Math.min(dp[i+j], dp[i] + Math.abs(h[i] - h[i+j]));
        		}
        	}
        }
        
        System.out.println(dp[N-1]);
        
        
        
    }
} Main
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner; 
import java.util.StringTokenizer; 
  
public class Main
{ 
    static class FastReader 
    { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() 
        { 
            br = new BufferedReader(new
                     InputStreamReader(System.in)); 
        } 
  
        String next() 
        { 
            while (st == null || !st.hasMoreElements()) 
            { 
                try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } 
  
        int nextInt() 
        { 
            return Integer.parseInt(next()); 
        } 
  
        long nextLong() 
        { 
            return Long.parseLong(next()); 
        } 
  
        double nextDouble() 
        { 
            return Double.parseDouble(next()); 
        } 
  
        String nextLine() 
        { 
            String str = ""; 
            try
            { 
                str = br.readLine(); 
            } 
            catch (IOException e) 
            { 
                e.printStackTrace(); 
            } 
            return str; 
        } 
    } 
  
    public static void main(String[] args) 
    { 
        FastReader fr = new FastReader(); 
        
        int N = fr.nextInt();
        int K = fr.nextInt();
        
        int[] dp = new int[N];
        Arrays.fill(dp, (int)2e9); dp[0] = 0;
        
        int[] h = new int[N];
        
        for(int i = 0; i < N; i++) {
        	h[i] = fr.nextInt();
        }
        
        for(int i = 0; i < N; i++) {
        	for (int j = 1; j <= K; j++) {
        		if (i + j < N) {
        			dp[i+j] = Math.min(dp[i+j], dp[i] + Math.abs(h[i] - h[i+j]));
        		}
        	}
        }
        
        System.out.println(dp[N-1]);
        
        
        
    }
}
