#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=510,INF=0x7f7f7f7f7f7f7f7f;
int a[N],b[N],beg[N],last[N],cost[N],dp[N][N],sum,minn=INF;
vector<int> g[N];
signed main(){
for(int i=1;i<N;i++) for(int j=1;j<N;j++) dp[i][j]=INF;
int n,k;cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
if(!beg[a[i]]) beg[a[i]]=i;
last[a[i]]=i;
}
for(int i=1;i<=n;i++) cin>>b[i];
for(int i=1;i<=n;i++) cost[a[i]]+=b[a[i]],sum+=b[a[i]];
for(int i=1;i<=n;i++){
if(!last[i]) continue;
for(int j=1;j<i;j++) if(last[j]&&last[j]<beg[i]) g[i].push_back(j);
}
for(int i=1;i<=n;i++) if(last[i]) dp[1][i]=cost[i];
for(int i=2;i<=n;i++){
if(!last[i]) continue;
for(int j=0;j<g[i].size();j++) for(int l=1;l<i;l++)
if(dp[l][g[i][j]]!=INF) dp[l+1][i]=min(dp[l+1][i],dp[l][g[i][j]]+b[i]);
}
for(int i=1;i<=n;i++) if(last[i]&&dp[k][i]!=INF) minn=min(minn,dp[k][i]);
if(minn==INF) cout<<-1<<endl;
else cout<<sum-minn<<endl;
return 0;
}