#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
typedef vector<int> vi;
#define dd(x) cout << #x << " = " << x << ", "
#define de(x) cout << #x << " = " << x << endl
#define rep(i,a,b) for(int i=(a);i<(b);++i)
#define per(i,a,b) for(int i=(b)-1;i>=(a);--i)
#define all(x) (x).begin(),(x).end()
#define sz(x) (int)(x).size()
#define mp make_pair
#define pb push_back
#define fi first
#define se second
const int INF = 0x3f3f3f3f;
const ll LINF = 0x3f3f3f3f3f3f3f3f;
const int MOD = (int)1e9+7;
const int maxn = (int)-1;

#define IO(x) freopen(x".in", "r", stdin); freopen(x".out", "w", stdout);

const db eps = 1e-6;
bool eq(const db &a, db const &b) { return fabs(a - b) < eps; }
bool ls(const db &a, db const &b) { return a + eps < b; }
bool le(const db &a, db const &b) { return eq(a, b) || ls(a, b); }

int x[55], y[55];

int main ()
{
    int n, kk;
    scanf("%d%d", &n, &kk);
    rep(i, 0, n) {
        scanf("%d%d", &x[i], &y[i]);
    }
    ll ans = (ll)4e18 + 7;
    if (kk >= 4) {

    rep(i, 0, n) {
        rep(j, 0, n) {
            rep(k, 0, n) {
                rep(l, 0, n) {
                    int up = max(y[i], max(y[j], max(y[k], y[l])));
                    int down = min(y[i], min(y[j], min(y[k], y[l])));
                    int right = max(x[i], max(x[j], max(x[k], x[l])));
                    int left = min(x[i], min(x[j], min(x[k], x[l])));
                    int cnt = 0;
                    rep(p, 0, n) {
                        if (x[p] <= right && x[p] >= left && y[p] <= up && y[p] >= down)
                            cnt++;
                    }
                    if (cnt >= kk) {
                        ll temp = (ll)(up - down) * (right - left);
                        ans = min(ans, temp);
                    }
                }
            }
        }
    }
    printf("%lld\n", ans);
    } else if (kk == 2) {
            rep(k, 0, n) {
                rep(l, 0, n) {
                    int up = max(y[k], y[l]);
                    int down = min(y[k], y[l]);
                    int right = max(x[k], x[l]);
                    int left = min(x[k], x[l]);

                    int cnt = 0;
                    rep(p, 0, n) {
                        if (x[p] <= right && x[p] >= left && y[p] <= up && y[p] >= down)
                            cnt++;
                    }
                    if (cnt >= kk) {
                        /*
                        de(cnt);
                        dd(k); de(l);
                        dd(up); dd(down); dd(right); de(left);
                        */
                        ll temp = (ll)(up - down) * (right - left);
                        //dd(ans); de(temp);
                        ans = min(ans, temp);
                    }
                }


    }
    printf("%lld\n", ans);
    } else if (kk == 3) {
        rep(j, 0, n) {
            rep(k, 0, n) {
                rep(l, 0, n) {
                    int up = max(y[j], max(y[k], y[l]));
                    int down = min(y[j], min(y[k], y[l]));
                    int right = max(x[j], max(x[k], x[l]));
                    int left = min(x[j], min(x[k], x[l]));
                    int cnt = 0;
                    rep(p, 0, n) {
                        if (x[p] <= right && x[p] >= left && y[p] <= up && y[p] >= down)
                            cnt++;
                    }
                    if (cnt >= kk) {
                        ll temp = (ll)(up - down) * (right - left);
                        ans = min(ans, temp);
                    }
                }
            }
    }
    printf("%lld\n", ans);
    }


    return 0;
}


Measured memory_bytes: 384