{
TASK:books
LANG:pascal
}

const ogr = 200;

var a : array[0..ogr, 0..ogr] of longint;
    s, d : array[0..ogr] of longint;
    otg, i, j, k, l, o, p, m, n : longint;


procedure init;
 begin
  readln(n, k);
  for i := 1 to n do
    read(s[i]);
  readln;
  for i := 1 to n do
    read(d[i]);
 end;


function count(b, as, kk : longint) : longint;
var kt, l, s1, ss, i, min : longint;
 begin
   if b = 0 then count := 0
   else if kk > k then count := 1000000000
  else
  if as <= b then
    begin
     ss := 0;
     if k <= kk then
       begin
        for i := 1 to b do
          ss := ss + s[i] * d[i];
       end
     else
     begin
     for i := b downto b - as + 1 do
       begin
        ss := ss + s[i] * d[as - (b - i)];
       end;
     end;
     s1 := 0;
     min := 1000000000;
     i := 0;
     kt := b - as;
     if k <= kk then count := ss
     else
     begin
     repeat
      inc(i);
      if kt - i < 0 then break;
      if a[kt, i] > 0 then s1 := a[kt, i]
                      else s1 := count(kt, i, kk + 1);
      if min > s1 then min := s1;
     until false;
     a[b, as] := ss + min;
     count := ss + min;
     end;
    end;
 end;






begin
 init;
 a[1, 1] := s[1]*d[1];
 otg := 1000000000;
 for i := 1 to n - k + 1 do
   begin
    m := count(n, i, 1);
    if otg > m then otg := m;
   end;
 writeln(otg);
end.
