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

int a[10][10];
int b[10][10];
int c[10][10];
int n;
int izracunaj(){
    int zbir = 0;
    for(int i=0; i<n; i++){
        for(int j=0; j<n; j++)
            if(c[i][j] == 1)
                zbir += b[i][j];
    }
    return zbir;
}
int resenje = 100000000;
void resi(int red, int kolona){
    for(int i=red; i<n; i++){
        for(int j=kolona; j<n; j++){
            if(red==n-1 && kolona==n-1){
                resenje = min(resenje, izracunaj());
            }
            c[red][kolona] = 1;
            if(red==n-1)
                resi(red, kolona+1);
            if(kolona == n-1)
                resi(red+1, kolona);
        }
        c[red][kolona] = 0;
    }
}

int main()
{
    cin >> n;
    for(int i=0; i<n; i++){
        string s; cin >> s;
        for(int j=0; j<n; j++){
            a[i][j] = s[j];
        }
    }
    int b[n][n];
    for(int i=0; i<n; i++){
        for(int j=0; j<n; j++){
            int x; cin >> x;
            b[i][j] = x;
        }
    }
    for(int i=0; i<n; i++){
        for(int j=0; j<n; j++)
            c[i][j] = 0;
    }
    resi(0,0);
    cout << resenje << endl;
    return 0;
}