#include<iostream>
#include<cmath>
#include<vector>
#include<algorithm>
#include<iomanip>
using namespace std;
struct Pox
{
  long double L,a,b;
  Pox(long double L,long double a,long double b):L(L),a(a),b(b){}
};

long double calc(vector<Pox>& vec)
{
  long double res = 0;
  for(int i=0;i<vec.size();i++)
    for(int j=i+1;j<vec.size();j++)
      res += pow(vec[i].L-vec[j].L,2)+pow(vec[i].a-vec[j].a,2)+pow(vec[i].b-vec[j].b,2);

  return res;
}

int main()
{
  int N,M;
  cin >> N >> M;
  long double ans = 0;
  vector<Pox> G;
  for(int i=0;i<N;i++)
    {
      long double L,a,b;
      cin >> L >> a >> b;
      G.push_back(Pox(L,a,b));
    }

  for(int i=0;i<=(1<<N)-1;i++)
    {
      if(__builtin_popcount(i) != M)
	continue;

      vector<Pox> vec;
      for(int j=0;j<N;j++)
	{
	  if((i>>j) & 1)
	    vec.push_back(G[j]);
	}
      ans = max(ans,calc(vec));
    }
  cout << setiosflags(ios::fixed) << setprecision(20) << ans << endl;

  return 0;
}