#include<fstream>
#include<iomanip>
#include<algorithm>
#include<math.h>
#define x first
#define y second
using namespace std;
ifstream fi("popandai.in");
ofstream fo("popandai.out");
pair<int,int> A[305];
int n,k,i,j,ind,S[305][305];
long double rez,St[305],Dr[305];
bool checku(int i, int j, int k)
{
if(A[k].x<A[i].x || A[k].x>A[j].x)
return 0;
int val;
if(A[j].y==A[i].y)
val=A[i].y;
else
val=((A[j].x-A[i].x)*(A[k].x-A[i].x))/(A[j].y-A[i].y)+A[i].y;
return (val>=A[k].y);
}
bool checkst(int i, int j, int k)
{
int val;
if(A[j].y==A[i].y)
val=A[i].y;
else
val=((A[j].x-A[i].x)*(A[k].x-A[i].x))/(A[j].y-A[i].y)+A[i].y;
return (val<A[k].y);
}
int getpoints(int i, int j, int k)
{
if(k<i)
{
swap(k,j);
swap(i,j);
}
if(k<j)
swap(k,j);
if(checku(i,k,j))
return (S[i][k]-1-S[i][j]-S[j][k]);
return (S[i][j]+S[j][k]-S[i][k]);
}
long double area(int i, int j, int k)
{
return fabs(((A[i].x-A[k].x)*(A[j].y-A[i].y)-(A[i].x-A[j].x)*(A[k].y-A[i].y))/2.0);
}
int main()
{
fi>>n>>k;
for(i=1; i<=n; i++)
fi>>A[i].x>>A[i].y;
sort(A+1,A+n+1);
for(i=1; i<n; i++)
for(j=i+1; j<=n; j++)
for(ind=1; ind<=n; ind++)
if(ind!=i && ind!=j && checku(i,j,ind))
S[i][j]++;
rez=1000000000.0;
for(i=1; i<n; i++)
for(j=i+1; j<=n; j++)
{
for(ind=0; ind<=k; ind++)
St[ind]=Dr[ind]=1000000000.0;
for(ind=1; ind<=n; ind++)
{
if(ind==i || ind==j)
continue;
if(checkst(i,j,ind))
St[min(getpoints(i,j,ind),k)]=min(St[min(getpoints(i,j,ind),k)],area(i,j,ind));
else
Dr[min(getpoints(i,j,ind),k)]=min(Dr[min(getpoints(i,j,ind),k)],area(i,j,ind));
}
for(ind=1; ind<=k; ind++)
St[ind]=min(St[ind],St[ind-1]);
for(ind=k-1; ind>=0; ind--)
Dr[ind]=min(Dr[ind],Dr[ind+1]);
for(ind=0; ind<=k; ind++)
rez=min(rez,St[ind]+Dr[k-ind]);
}
fo<<setprecision(1)<<fixed<<rez<<"\n";
fi.close();
fo.close();
return 0;
}