#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
struct stu{
int x;
ll dp;
};
int n,a[100007],b[100007];
vector<stu> f,g;
const ll inf=0x3f3f3f3f3f3f3f3f;
void Subt(){
cin>>n;
for(int i=1;i<n;i++) cin>>a[i];
for(int i=1;i<=n;i++) cin>>b[i];
a[n]=0;
f.clear();
f.push_back((stu){0,0});
for(int i=1;i<=n;i++){
int x=0;
g.clear();
for(int j=30;j>=-1;j--){
int y=x|a[i-1]|a[i];
if(j!=-1) y|=(1<<j);
if(y>=b[i]){
ll mn=inf;
for(stu l:f){
if((l.x&y)!=a[i-1]) continue;
mn=min(mn,l.dp+y-b[i]);
}
if(mn<inf) g.push_back((stu){y,mn});
}
x|=((1<<j)&b[i]);
}
swap(f,g);
}
ll mn=inf;
for(stu l:f) mn=min(mn,l.dp);
if(mn<inf) cout<<mn<<endl;
else cout<<-1<<endl;
return;
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int T=1;
cin>>T;
while(T--) Subt();
}