/*
TASK:books
LANG:C
*/

#include <stdio.h>

#define inp stdin

long long v[202][202], f[202][102];

short N, K;
long long s[202], d[202];

void initv(void)
{
  short i, j;
  for(i = 1; i <= N; i++)
  {
    v[i][i] = s[i]*d[1];
    for(j = i+1; j <= N; j++)
      v[i][j] = v[i][j-1]+s[j]*d[j-i+1];
  }
}

void calcf(void)
{
  short s, k, i, min;
  for(s = 1; s <= N; s++)
    f[s][1] = v[s][N];
  for(k = 1; k <= K; k++)
    f[N][k] = v[N][N];
  for(s = N-1; s; s--)
    for(k = 2; k <= K; k++)
    {
      for(min = i = s; i <= N; i++)
        if(f[i+1][k-1]+v[s][i] < f[min+1][k-1]+v[s][min])
          min = i;
      f[s][k] = f[min+1][k-1]+v[s][min];
    }
}

int main(void)
{
  short i, min;
/*  FILE *fp;
  fp = fopen("books.inp", "rt");*/
  fscanf(inp, "%hd %hd", &N, &K);
  for(i = 1; i <= N; i++)
    fscanf(inp, "%Ld", &s[i]);
  for(i = 1; i <= N; i++)
    fscanf(inp, "%Ld", &d[i]);
//  fclose(fp);

  initv();
  calcf();
  for(min = i = 1; i <= K; i++)
    if(f[1][i] < f[1][min])
      min = i;
  printf("%Ld\n", f[1][min]);
  return 0;
}
