#include <bits/stdc++.h>
using namespace std;
long long int a[300000];
long long int d[5000][5000];
int n, m;
int bol, mod;
int dp(int k, int l, int j) {
  if (d[l][j] != -1) {
    return d[l][j];
  }
  int x = 0, y = 0;
  int q, w;
  int i;
  if (k == 0) {
    d[l][j] = 0;
    return 0;
  }
  if (!l) {
    for (i = k - 1; i > k - bol; i--) {
      x += a[i];
    }
    if (j == 1) {
      d[l][j] = x;
      return x;
    } else {
      q = dp(k - bol, l, j - 1);
      d[l][j] = x + q;
      return x + q;
    }
  }
  if (!j) {
    for (i = k - 1; i > k - bol - 1; i--) {
      x += a[i];
    }
    if (l == 1) {
      d[l][j] = x;
      return x;
    } else {
      q = dp(k - bol - 1, l - 1, j);
      d[l][j] = x + q;
      return x + q;
    }
  }
  for (i = k - 1; i > k - bol - 1; i--) {
    x += a[i];
  }
  for (i = k - 1; i > k - bol; i--) {
    y += a[i];
  }
  q = dp(k - bol - 1, l - 1, j);
  w = dp(k - bol, l, j - 1);
  if (q + x < w + y) {
    d[l][j] = q + x;
    return q + x;
  }
  d[l][j] = w + y;
  return w + y;
}
int main() {
  int i, j;
  int x, y;
  cin >> n >> m;
  for (i = 0; i < n; i++) {
    cin >> a[i];
  }
  sort(a, a + i);
  for (i = 0; i < n - 1; i++) {
    a[i] = a[i + 1] - a[i];
  }
  for (i = 0; i < 5000; i++) {
    for (j = 0; j < 5000; j++) {
      d[i][j] = -1;
    }
  }
  mod = n % m;
  bol = n / m;
  x = mod;
  y = m - mod;
  cout << dp(n - 1, x, y);
}
