import std.stdio; // readln
import std.array; // split
import std.conv; // to
import std.typecons;
import std.range;
import std.algorithm;

void main(){
	string[] s = split(readln());
	int N = to!int(s[0]);
	int K = to!int(s[1]);

	long[] X = new long[](N);
	long[] Y = new long[](N);
	Tuple!(long,long)[] T = new Tuple!(long,long)[](N);
	for(long i = 0; i < N; i++){
		s = split(readln());
		long x = to!long(s[0]);
		long y = to!long(s[1]);
		X[i] = x;
		Y[i] = y;
		T[i] = Tuple!(long,long)(x,y);
	}
	auto sorted_x = sort(X);
	auto sorted_y = sort(Y);

	long ans = long.max;
	for(int i = 0; i < N; i++){
		for(int j = i + 1; j < N; j++){
			int[] sum = new int[](N);
			sum[0] = 0;
			for(int k = 1; k < N; k++){
				int cnt = 0;
				for(int l = 0; l < N; l++){
					if(T[l][1] >= sorted_y[i] && T[l][1] <= sorted_y[j] && T[l][0] >= sorted_x[0] && T[l][0] <= sorted_x[k]){
						cnt++;
					}
				}
				sum[k] = cnt; //sum[k] := 0 から X[k] までにある点
			}
			for(int k = 0; k < N; k++){
				for(int l = k + 1; l < N; l++){
					if(sum[l] - sum[k] >= K){
						ans = min(ans, (sorted_x[l] - sorted_x[k]) * (sorted_y[j] - sorted_y[i]));
					}
				}
			}
		}
	}
	writeln(ans);
}
