#include <bits/stdc++.h>
using namespace std;
long long ans = 1000000000000000000;
int N, K;
pair<int, int> x[100000], y[100000];
vector<int> x1, x2, y11, y2;
long long query(int w1, int w2, int w3, int w4) {
  map<int, bool> done;
  for (int i = 0; i < w1; i++) done[x1[i]] = 1;
  for (int i = 0; i < w2; i++) done[x2[i]] = 1;
  for (int i = 0; i < w3; i++) done[y11[i]] = 1;
  for (int i = 0; i < w4; i++) done[y2[i]] = 1;
  w2 = N - 1 - w2, w4 = N - 1 - w4;
  while (done[x[w1].second]) w1++;
  while (done[x[w2].second]) w2--;
  while (done[y[w3].second]) w3++;
  while (done[y[w4].second]) w4--;
  long long t1 = max(1, (x[w2].first - x[w1].first + 1) / 2),
            t2 = max(1, (y[w4].first - y[w3].first + 1) / 2);
  return t1 * t2;
}
int main() {
  scanf("%d%d", &N, &K);
  for (int i = 0; i < N; i++) {
    int z1, z2;
    scanf("%d%d%d%d", &x[i].first, &y[i].first, &z1, &z2);
    x[i].first += z1, y[i].first += z2, x[i].second = i, y[i].second = i;
  }
  sort(x, x + N), sort(y, y + N);
  for (int i = 0; i < K; i++)
    x1.push_back(x[i].second), x2.push_back(x[N - 1 - i].second),
        y11.push_back(y[i].second), y2.push_back(y[N - 1 - i].second);
  for (int q1 = 0; q1 < K + 1; q1++)
    for (int q2 = 0; q2 < K + 1 - q1; q2++)
      for (int q3 = 0; q3 < K + 1 - q1 - q2; q3++)
        ans = min(ans, query(q1, q2, q3, K - q1 - q2 - q3));
  cout << ans;
}
