#include <bits/stdc++.h>
using namespace std;
vector<int> vec;
int n, k, s, l, len, tot, mem[5005][5005];
int dp(int i, int j) {
  if (i > s || j > l || i == s && j == l) return 0;
  if (mem[i][j] != -1) return mem[i][j];
  int idx = len * (i + j) - i + 1;
  return mem[i][j] = vec[idx] - vec[idx - 1] + max(dp(i + 1, j), dp(i, j + 1));
}
int main() {
  cin >> n >> k;
  vec.resize(n + 1);
  for (int i = 1; i <= n; i++) scanf("%d", &vec[i]);
  sort(vec.begin() + 1, vec.end());
  for (int i = 1; i <= n; i++) tot += vec[i] - vec[i - 1];
  memset(mem, -1, sizeof mem);
  len = (n - 1) / k + 1;
  l = (n - 1) % k + 1;
  s = (n - l * len) / (len - 1);
  cout << tot - dp(0, 0) << endl;
  return 0;
}
