void main(){
  import std.stdio, std.string, std.conv, std.algorithm;

  int n, k; rd(n, k);
  auto x=new long[](n), y=new long[](n);
  foreach(i; 0..n) rd(x[i], y[i]);

  long mn=5_000_000_000_000_000_000;
  foreach(i1; 0..n)foreach(i2; (i1+1)..n){
    foreach(j1; 0..n)foreach(j2; (j1+1)..n){
      auto x1=x[i1], x2=x[i2];
      auto y1=y[j1], y2=y[j2];
      if(x1>x2) swap(x1, x2);
      if(y1>y2) swap(y1, y2);
      // if((x2-x1)*(y2-y1)>=mn) continue;
      int cnt=0;
      foreach(t; 0..n){
        if(x1<=x[t] && x[t]<=x2 && y1<=y[t] && y[t]<=y2) cnt++;
      }
      if(cnt>=k) mn=min(mn, (x2-x1)*(y2-y1));
    }
  }
  writeln(mn);
}

void rd(T...)(ref T x){
  import std.stdio, std.string, std.conv;
  auto l=readln.split;
  foreach(i, ref e; x){
    e=l[i].to!(typeof(e));
  }
}
