#include<bits/stdc++.h>
using namespace std;
const int MX=1e9;
int v[110],c[110];
int f1[10000010],f[10000010];
int n,t;
int main()
{
scanf("%d%d",&n,&t);
int num=0,mx=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&v[i]);
}
for(int i=1;i<=n;i++)
{
scanf("%d",&c[i]);
mx=max(mx,v[i]);
num+=v[i]*c[i];
}
if(num<t)
{
printf("-1");
return 0;
}
for(int i=1;i<=mx+t;i++)
{
f1[i]=f[i]=MX;
}
for(int i=1;i<=n;i++)
{
for(int j=v[i];j<=mx;j++)
{
f1[j]=min(f1[j],f1[j-v[i]]+1);
}
}
for(int i=1;i<=n;i++)
{
int cnt=1;
while(cnt<=c[i])
{
for(int j=mx+t;j>=cnt*v[i];j--)
{
f[j]=min(f[j],f[j-v[i]*cnt]+cnt);
}
c[i]-=cnt;
cnt*=2;
}
if(c[i])
{
for(int j=mx+t;j>=v[i];j--)
{
f[j]=min(f[j],f[j-v[i]*c[i]]+c[i]);
}
}
}
int ans=MX;
for(int i=t;i<=mx+t;i++)
{
ans=min(ans,f[i]+f1[i-t]);
}
if(ans==MX) printf("-1");
else printf("%d",ans);
return 0;
}