import std.stdio, std.string, std.conv, std.bigint, std.typecons, std.algorithm, std.array, std.math, std.range;
 
void main() {
    auto tmp = readln.split.to!(long[]);
    auto N = tmp[0], K = tmp[1];
    long[][] points;
    long[] xs, ys;
    foreach (i; 0..N) {
        tmp = readln.split.to!(long[]);
        points ~= tmp;
        xs ~= tmp[0];
        ys ~= tmp[1];
    }
    xs = sort(xs).array;
    ys = sort(ys).array;

    ulong minS = ulong.max;
    foreach (i; 0..N) {
        foreach (j; i+1..N) {
            foreach (k; 0..N) {
                foreach (l; k+1..N) {
                    if (points.filter!(p => xs[i] <= p[0] && p[0] <= xs[j] && ys[k] <= p[1] && p[1] <= ys[l]).array.length < K) continue;
                    minS = min(minS, (xs[j] - xs[i]) * (ys[l] - ys[k]));
                }
            }
        }
    }
    writeln(minS);
}
