#include <iostream>
using namespace std;
int k[2000010], c[2000010], f[2000010];
int main()
{
long long m, ans = 0;
int n, q = 0;
cin >> n >> m;
for(int i = 1; i <= n; i++)
cin >> k[i];
for(int i = 1; i <= n; i++)
{
cin >> c[i];
q += c[i] * k[i];
}
f[0] = 1;
for(int i = 1; i <= n; i++)
{
for(int j = q; j >= 0; j--)
{
for(int l = 0; l <= k[i] && l * c[i] <= j; l++)
{
f[j] = max(f[j], f[j - c[i] * l] * l);
}
}
}
for(int i = 0; i <= m; i++)
if(f[i] >= m)
{
cout << i << endl;
break;
}
return 0;
}