#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const ll N=3e5+10;
ll t,n,sum;
ll v[N],c[N];
ll dp1[N],dp2[N],tmp[N];
int main(){
cin>>n>>t;
for(int i=1;i<=n;i++){
cin>>v[i];
}
for(int i=1;i<=n;i++){
cin>>c[i];
sum+=v[i]*c[i];
}
if(sum<t){
cout<<"-1\n";
return 0;
}
dp1[0]=0;dp2[0]=0;
for(int i=1;i<=sum;i++){
dp1[i]=dp2[i]=1000000000000000000;
}
for(int i=1;i<=n;i++){
for(int j=0;j<=sum;j++){
tmp[j]=dp1[j];
}
for(int yu=0;yu<v[i];yu++){
deque<ll> qe;
for(int j=yu;j<=sum;j+=v[i]){
while(qe.size()&&tmp[qe.back()]+(j-qe.back())/v[i]>tmp[j]) qe.pop_back();
qe.push_back(j);
while(qe.size()&&(j-qe.front())/v[i]>c[i]&&c[i]!=0) qe.pop_front();
if(qe.size())dp1[j]=tmp[qe.front()]+(j-qe.front())/v[i];
else dp1[j]=-1000000000000000000;
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=sum;j++){
tmp[j]=dp2[j];
}
for(int j=v[i];j<=sum;j+=v[i]){
dp2[j]=min(dp2[j],tmp[j]);
if(j-v[i]>=0) dp2[j]=min(dp2[j],dp2[j-v[i]]+1);
}
}
ll ans=1000000000000000000;
for(int i=1;i<=sum;i++){
if(i-t>=0) ans=min(ans,dp2[i-t]+dp1[i]);
}
cout<<ans;
return 0;
}