#include using namespace std; typedef pairP; typedef vectorVI; #define rep(i,n) for(int i=0;i<(n);i++) #define pb push_back #define all(v) (v).begin(),(v).end() #define maxv(a,b) (a)=max((a),(b)) #define minv(a,b) (a)=min((a),(b)) #define int long long const int INF=LLONG_MAX/100; int N,M,A[500],K[500]; int dp[250010]; signed main(){ cin>>N>>M; rep(i,N)cin>>A[i]; rep(i,N)cin>>K[i]; int sum=0,ma=0; rep(i,N)sum+=A[i]*K[i]; sum-=M; if(sum<0){ cout<<"-1"<=0)minv(dp[j],dp[j-A[i]]+1); } int ans=0; if(sum>ma*ma){ int m=sum-ma*ma; ans+=(m+ma-1)/ma; sum-=(m+ma-1)/ma*ma; } if(dp[sum]==INF)cout<<"-1"<