#include <iostream>
using namespace std;
#include<vector>
#include<algorithm>
#include<string>
int main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
string s;
cin>>s;
vector<long long>v(n);
for(int i=0;i<n;i++){
cin>>v[i];
}
vector<vector<long long>> cost(n+1,vector<long long>(n+1,1e18));
for(int i=1;i<=n;i++){
cost[i][i-1]=0;
}
for(long long len=2;len<=n;len+=2){
for(int i=0;i+len-1<n;i++){
int j=i+len-1;
for(int k=i+1;k<=j;k+=2){
if(s[k]==s[i]){
if(cost[i+1][k-1]!=1e18&&cost[k+1][j]!=1e18){
long long c=cost[i+1][k-1]+cost[k+1][j]+v[i]*v[k];
cost[i][j]=min(c,cost[i][j]);
}
}
}
}
}
if(cost[0][n-1]==1e18){
cout<<-1<<endl;
}
else{
cout<<cost[0][n-1]<<endl;
}
}
return 0;
}