import std.algorithm, std.container, std.conv, std.math, std.range, std.typecons, std.stdio, std.string;

auto rdsp(){return readln.splitter;}
void pick(R,T)(ref R r,ref T t){t=r.front.to!T;r.popFront;}
void readV(T...)(ref T t){auto r=rdsp;foreach(ref v;t)pick(r,v);}
void readA(T)(size_t n,ref T[]t){t=new T[](n);auto r=rdsp;foreach(ref v;t)pick(r,v);}

void main()
{
  int n, m; readV(n, m);
  int[] x; readA(m, x);

  if (m <= n) {
    writeln(0);
    return;
  }

  x.sort();
  auto y = new int[](m-1);
  foreach (i; 0..m-1) y[i] = x[i+1] - x[i];

  y.sort();
  writeln(y[0..m-n].sum);
}
