#include <bits/stdc++.h>

using namespace std;

long long inf = numeric_limits<long long>::max();

int main()
{
    int n;
    cin >> n;
    vector<string> mat(n);
    vector<vector<int>> t(n + 1, vector<int>(n + 1));

    for(int i = 0; i < n; i++) cin >> mat[i];

    for(int y = 1; y <= n; y++)
    {
        for(int x = 1; x <= n; x++)
        {
            cin >> t[x][y];
        }
    }

    vector<vector<int>> dp(n + 1, vector<int>(n + 1, inf));

    for(int y = 1; y <= n; y++)
    {
        for(int x = 1; x <= n; x++)
        {
            if(x == y && y == 1) dp[x][y]= t[x][y];
            else
            {
                dp[x][y] = t[x][y] + min(dp[x - 1][y], dp[x][y - 1]);
            }
        }
    }

    cout << dp[n][n];

    return 0;
}