import qualified Data.ByteString.Char8 as BS
import Data.Char
import Data.List

main = do
  li <- BS.getLine
  let [n,m] = unfoldr (BS.readInt . BS.dropWhile isSpace) li
  li <- BS.getLine
  let xs = unfoldr (BS.readInt . BS.dropWhile isSpace) li
  let ans = compute n m xs
  print ans

compute :: Int -> Int -> [Int] -> Int
compute n m xs = sum $ drop (pred n) ds
  where
    xs1 = sort xs
    ds = sortBy (flip compare) $ zipWith subtract xs1 (tail xs1)
{-
N個の場所にはN-1個の間隙がある。
1個しか石がないと、端から端まで一人で辿り、総和のコストがかかる
1個石が増えるたびに、最大の間隙の向こうに配置することで、そこを超えなくてよくなる。
というだけだ。
-}
