fn g() -> Vec { let mut s = String::new(); std::io::stdin().read_line(&mut s).ok(); s.split_whitespace().flat_map(str::parse).collect() } fn main() { let (n, mut v) = (g(), g()); if n[1] < 2 { println!("0"); return; } v.sort(); let v: Vec<_> = v.windows(2).map(|a| (a[1] - a[0]).pow(2)).collect(); let mut a = v[0..n[1] - 1].iter().sum::(); (0..=v.len() - n[1]).for_each(|i| { a = a.min(a - v[i] + v[i + n[1] - 1]); }); println!("{a}") }