#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2210;
int a[MAXN], b[MAXN];
long long f[MAXN][MAXN];
inline void update(long long &a, long long b) {
  if (a > b) a = b;
}
int main() {
  ios::sync_with_stdio(false);
  int n, K;
  cin >> n >> K;
  for (int i = 1; i <= n; i++) cin >> a[i];
  for (int i = 1; i <= n; i++) cin >> b[i];
  memset(f, 63, sizeof(f));
  f[0][0] = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = min(i, K); j >= 1; j--) {
      update(f[j][j], f[j - 1][j - 1] + a[i] + b[i]);
      update(f[j][j], f[j][j - 1] + b[i]);
      for (int k = j - 1; k >= 1 && k + n - i >= K; k--) {
        update(f[j][k], f[j - 1][k] + a[i]);
        update(f[j][k], f[j][k - 1] + b[i]);
        update(f[j][k], f[j - 1][k - 1] + a[i] + b[i]);
      }
      update(f[j][0], f[j - 1][0] + a[i]);
    }
  }
  cout << f[K][K] << endl;
  return 0;
}
