#include<bits/stdc++.h>
using namespace std;
int v[101],c[101];
int dp[10001+120*120],f[10001+120*120];
void read(int &x){
char ch=getchar();
int f=1;
x=0;
while(ch<'0'||ch>'9'){
if(ch=='-'){
f=-f;
}
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x*=10;
x+=ch-'0';
ch=getchar();
}
x*=f;
}
int main(){
int t,n;
read(n);
read(t);
int w=0;
int js=0;
for(int i=1;i<=n;i++){
read(v[i]);
w=max(w,v[i]);
}
for(int i=1;i<=n;i++){
read(c[i]);
js+=v[i]*c[i];
}
if(js<t){
printf("-1");
return 0;
}
for(int i=1;i<=w*w+t;i++){
dp[i]=1e9;
f[i]=1e9;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=c[i];j++){
for(int k=w*w+t;k>=v[i];k--){
dp[k]=min(dp[k-v[i]]+1,dp[k]);
}
}
}
for(int i=1;i<=n;i++){
for(int j=v[i];j<=w*w+t;j++){
f[j]=min(f[j-v[i]]+1,f[j]);
}
}
int ans=1e9;
for(int i=t;i<=w*w+t;i++){
ans=min(ans,f[i]+dp[i-t]);
}
if(ans==1e9){
printf("-1");
}
else{
printf("%d",ans);
}
return 0;
}