#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll INF=1e18;
int main() {
int n;
cin>>n;
vector<int>penalty(n);
for(int i=0;i<n;i++){
cin>>penalty[i];
}
vector<string>s(n),rev(n);
for(int i=0;i<n;i++){
cin>>s[i];
rev[i]=s[i];
reverse(rev.begin(),rev.end());
}
vector<vector<ll>>dp(n,vector<ll>(2,INF));
dp[0][0]=0;
dp[0][1]=penalty[0];
for(int i=1;i<n;i++){
if(s[i]>=s[i-1]){
dp[i][0]=min(dp[i-1][0],dp[i][0]);
}
if(s[i]>=rev[i-1]){
dp[i][0]=min(dp[i-1][1],dp[i][0]);
}
if(rev[i]>=s[i-1]){
dp[i][1]=min(dp[i-1][0],dp[i][1])+penalty[i];
}
if(rev[i]>=rev[i-1]){
dp[i][1]=min(dp[i-1][1],dp[i][1])+penalty[i];
}
}
ll ans=min(dp[n-1][0],dp[n-1][1]);
if(ans!=INF){
cout<<ans<<endl;
}
else cout<<-1<<endl;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwpjb25zdCBsbCBJTkY9MWUxODsKaW50IG1haW4oKSB7CgogICAgaW50IG47CiAgICBjaW4+Pm47CiAgICB2ZWN0b3I8aW50PnBlbmFsdHkobik7CiAgICBmb3IoaW50IGk9MDtpPG47aSsrKXsKICAgICAgICBjaW4+PnBlbmFsdHlbaV07CiAgICB9CiAgICB2ZWN0b3I8c3RyaW5nPnMobikscmV2KG4pOwogICAgZm9yKGludCBpPTA7aTxuO2krKyl7CiAgICAgICAgY2luPj5zW2ldOwogICAgICAgIHJldltpXT1zW2ldOwogICAgICAgIHJldmVyc2UocmV2LmJlZ2luKCkscmV2LmVuZCgpKTsKICAgIH0KICAgIHZlY3Rvcjx2ZWN0b3I8bGw+PmRwKG4sdmVjdG9yPGxsPigyLElORikpOwogICAgZHBbMF1bMF09MDsKICAgIGRwWzBdWzFdPXBlbmFsdHlbMF07CiAgICBmb3IoaW50IGk9MTtpPG47aSsrKXsKICAgICAgICBpZihzW2ldPj1zW2ktMV0pewogICAgICAgICAgICBkcFtpXVswXT1taW4oZHBbaS0xXVswXSxkcFtpXVswXSk7CiAgICAgICAgfQogICAgICAgIGlmKHNbaV0+PXJldltpLTFdKXsKICAgICAgICAgICAgZHBbaV1bMF09bWluKGRwW2ktMV1bMV0sZHBbaV1bMF0pOwogICAgICAgIH0gICAgICAgIAogICAgICAgIGlmKHJldltpXT49c1tpLTFdKXsKICAgICAgICAgICAgZHBbaV1bMV09bWluKGRwW2ktMV1bMF0sZHBbaV1bMV0pK3BlbmFsdHlbaV07CiAgICAgICAgfSAgICAgICAgCiAgICAgICAgaWYocmV2W2ldPj1yZXZbaS0xXSl7CiAgICAgICAgICAgIGRwW2ldWzFdPW1pbihkcFtpLTFdWzFdLGRwW2ldWzFdKStwZW5hbHR5W2ldOwogICAgICAgIH0KICAgIH0KICAgIGxsIGFucz1taW4oZHBbbi0xXVswXSxkcFtuLTFdWzFdKTsKICAgIGlmKGFucyE9SU5GKXsKICAgICAgICBjb3V0PDxhbnM8PGVuZGw7CiAgICB9CiAgICBlbHNlIGNvdXQ8PC0xPDxlbmRsOwp9Cg==