{
TASK:books
LANG:pascal
}
type
    integer=longint;
    byte=longint;
var
   k,n          : integer;

   d,s          : array[1..200] of longint;

   f            : array[1..200,1..200] of longint;
   res          : array[1..200,1..200] of longint;

procedure input;
var
   i    : integer;
begin
     readln(N,K);
     for i := 1 to N do
         read(s[i]);
     readln;
     for i := 1 to N do
         read(d[i]);
end;

procedure fillRes;
var
   i,j  : integer;
begin
     for i := 1 to N do
         res[i,i]:=D[1]*S[i];

     for i := 1 to N do
         for j:= (i+1) to N do
             begin
                  res[i,j]:=res[i,j-1]+S[j]*D[j-i+1];
             end;
end;


procedure fillF;
var
   i,j,l        : integer;
   Z            : integer;
begin
     F[1,1]:=S[1]*D[1];
     for i := 2 to N do
         F[1,i]:=F[1,i-1]+S[i]*D[i];
     for j := 2 to K do
         for i := j to N do
             begin
                  F[j,i]:=10000001;
                  for l:= i downto j do
                      begin
                           Z:=F[j-1,l-1]+RES[l,i];
                           if Z<F[j,i] then
                              F[j,i]:=Z;
                      end;
             end;
     writeln(F[k,n]);

end;


begin
     INPUT;
     FILLRES;
     FILLF;
end.