#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
typedef long long LL;
const int N=1005;
int n,k;
LL A[N],w[N];
LL dp[N][N];
int l[N],r[N];
void solve()
{
for(int i=0;i<=k;i++)
for(int j=0;j<=500;j++)
dp[i][j]=-1e12;
for(int i=1;i<=n;i++)
{
int a=A[i];
dp[1][a]=w[a];
for(int j=2;j<=a;j++)
for(int b=j-1;b<a;b++)
if(r[b]&&l[a]>r[b]) dp[j][a]=max(dp[j][a],dp[j-1][b]+w[a]);
}
LL res=0;
for(int i=k;i<=500;i++) res=max(res,dp[k][i]);
if(res>0)
printf("%d",res);
else
printf("-1");
}
int main()
{
scanf("%d%d",&n,&k);
memset(l,0x3f,sizeof l);
for(int i=1;i<=n;i++)
{
scanf("%d",&A[i]);
l[A[i]]=min(l[A[i]],i);
r[A[i]]=max(r[A[i]],i);
}
for(int i=1;i<=n;i++) scanf("%d",&w[i]);
solve();
}