#include <bits/stdc++.h>   using namespace std;   const int MOD7 = 1e9 + 7;   const int MOD9 = 1e9 + 9;   const double EPS = 1e-9;   long long int gcd(long long int a, long long int b) {     return b == 0 ? a : gcd(b, a % b);   }   int toint(const string &s) {     stringstream second;     second << s;     int x;     second >> x;     return x;   }   long long int mpow(long long int a, long long int n, int mod) {     long long int ret = 1;     long long int b = a;     while (n) {       if (n & 1) ret = (ret * b) % mod;       b = (b * b) % mod;       n >>= 1;     }     return (long long int)ret;   }   struct cmp {     bool operator()(pair<pair<int, int>, int> a, pair<pair<int, int>, int> b) {       if (a.first.first < b.first.first)         return true;       else if (a.first.first == b.first.first)         return a.first.second < b.first.second;       return false;     }   };   map<int, int> hashm;   vector<pair<int, int> > coordy, v;   int main() {     int tc;     tc = 1;     int i, n, m, k, a, b, c, d, u, w, sum, permissible, j;     long long minl = 0, areamin = (long long int)9223372036854775805;     int pfor[13] = {0}, pback[13] = {0};     while (tc--) {       scanf( %d , &n);       scanf( %d , &k);       for (i = 0; i < n; i++) {         scanf( %d , &a);         scanf( %d , &b);         scanf( %d , &c);         scanf( %d , &d);         coordy.push_back(make_pair(b + d, a + c));         hashm[a + c]++;       }       m = 0;       for (map<int, int>::iterator it = hashm.begin(); it != hashm.end(); ++it) {         v.push_back(make_pair(it->second, it->first));       }       m = v.size();       for (i = 0; i < k; i++) pfor[i + 1] = pfor[i] + v[i].first;       for (i = 0; i < k; i++) pback[i + 1] = pback[i] + v[m - 1 - i].first;       sort(coordy.begin(), coordy.end());       for (i = 0; i <= k; i++) {         for (j = 0; j <= k; j++) {           if (i <= m - 1 - j && v[i].second <= v[m - 1 - j].second &&               pfor[i] + pback[j] <= k) {             u = 0;             w = 0;             sum = 0;             permissible = n - k;             minl = 2 * MOD9;             while (u <= w && w < n) {               if (coordy[w].second >= v[i].second &&                   coordy[w].second <= v[m - 1 - j].second)                 sum++;               while (sum >= permissible && coordy[w].first >= coordy[u].first) {                 if (coordy[w].first > coordy[u].first)                   minl = min(minl,                              (long long int)(coordy[w].first - coordy[u].first));                 else                   minl = min(minl, (long long int)2);                 if (coordy[u].second >= v[i].second &&                     coordy[u].second <= v[m - 1 - j].second)                   sum--;                 u++;               }               w++;             }             if (minl != MOD9 * 2 && v[m - 1 - j].second != v[i].second)               areamin = min(areamin, (long long int)minl *                                          (v[m - 1 - j].second - v[i].second));             else if (minl != MOD9 * 2 && v[m - 1 - j].second == v[i].second)               areamin = min(areamin, (long long int)minl * 2);           }         }       }       if (n == 1 || (areamin / 4) == 0)         printf( 1 n );       else         printf( %lld n , areamin / 4);     }     return 0;   }