#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int n,x,a[1000000],t,res;
ll m;
vector<ll> b[2];
int main(){
	scanf("%d",&t);
	while (t--){
		b[0].clear();
		b[1].clear();
		scanf("%d %lld",&n,&m);
		for(int i=0;i<n;i++){
			scanf("%d",&a[i]);
		}
		for(int i=0;i<n;i++){
			scanf("%d",&x);
			b[x-1].push_back(a[i]);
		}
		sort (b[0].rbegin(),b[0].rend());
		sort (b[1].rbegin(),b[1].rend());
		b[0].insert(b[0].begin(),0);
		b[1].insert(b[1].begin(),0);
		for(int i=1;i<b[0].size();i++)  b[0][i]+=b[0][i-1];
		for(int i=1;i<b[1].size();i++)  b[1][i]+=b[1][i-1];
		res=0x3f3f3f3f;
		for(int i=0,cnt=b[1].size()-1;i<b[0].size();i++){
			while (cnt>0 && b[1][cnt-1]+b[0][i]>=m) cnt--;
			if(b[1][cnt]+b[0][i]>=m) res=min(res,i+2*cnt);
		}
		if(res==0x3f3f3f3f) printf("-1\n");
		else printf("%d\n",res);
	}
	return 0;
}
 	  		 					       	   	    		