{
TASK:books
LANG:pascal
}
program books;

const
	MAXN				= 200;
	MAXK				= 100;

type
	Integer				= LongInt;

var
	C				: Array [0 .. MAXN, 0 .. MAXN] of Int64;
	F				: Array [0 .. MAXN, 0 .. MAXK] of Int64;
	s				: Array [1 .. MAXN] of LongInt;
	d				: Array [1 .. MAXN] of LongInt;
	N, K, i, j, x			: Integer;

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

procedure Solve;
begin
	for i := 0 to N do
		for j := 0 to N do
			C[i, j] := 0;
	for i := 1 to N do
		for j := i to N do
			C[i, j] := C[i, j-1] + s[j]*d[j-i+1];
	for i := 0 to N do
		F[i, 1] := C[1, i];
	for i := 0 to N do
		for j := 2 to K do begin
			if (i = 0) then
				F[i, j] := 0
			else begin
				F[i, j] := F[i, j-1];
				for x := 1 to i do
					if (F[i,j] > C[i-x+1,i]+F[i-x,j-1]) then
						F[i, j] := C[i-x+1, i]+F[i-x,j-1];
			end;
		end;
end;

procedure writeOutput;
begin
	writeln(F[N, K]);
end;

begin
	readInput;
	Solve;
	writeOutput;
end.
