#include<bits/stdc++.h>
using namespace std;
long long n, t, sum, mini = LONG_LONG_MAX, v[1005], c[1005], dp[1000005], p[1000005];
signed 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;
return 0;
}
memset(dp, 0x3f, sizeof dp);
memset(p, 0x3f, sizeof p);
dp[0] = 0;
p[0] = 0;
for(int i = 1; i <= n; i ++)
{
for(int k = 1; k <= c[i]; k ++)
{
for(int j = sum; j >= v[i] * k; j --)
{
dp[j] = min(dp[j], dp[j - v[i] * k] + k);
}
}
}
for(int i = 1; i <= n; i ++)
{
for(int j = v[i]; j <= sum; j ++)
{
p[j] = min(p[j], p[j - v[i]] + 1);
}
}
for(int i = 1; i <= sum; i ++)
{
mini = min(mini, p[i] + dp[t + i]);
}
if(mini > INT_MAX) cout << -1;
else cout << mini;
return 0;
}
1 RE + 3 AC + 2 WA + 4 TLE