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

const int inf = 0x3f3f3f3f;
int n, m, a[6], b[6], c[6][6], dp[20000][6][6][5];

int compressed (vector<int> &vc)
{
    int state = 0;
    for (int i = 0; i < n; i++) state = state * 5 + vc[i];
    return state;
}
vector<int> decompressed (int state)
{
    vector<int> r;
    r.resize(n);
    for (int i = n - 1; ~i; i--)
    {
        r[i] = state % 5;
        state /= 5;
    }
    return r;
}
bool ck (vector<int> &vc)
{
    for (int i = 0; i < n; i++) if (vc[i] < a[i]) return 0;
    return 1;
}

vector<int>flow, nf;

int main()
{
    scanf ("%d %d", &n, &m);
    int upp = 1;
    for (int i = 0; i < n; i++) scanf ("%d", a + i), upp *= 5;
    for (int i = 0; i < m; i++) scanf ("%d", b + i);
    for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) scanf ("%d", &c[i][j]);
    memset(dp, inf, sizeof dp);
    dp[0][0][0][0] = 0;
    int ans = inf;
    for (int sta = 0; sta < upp; sta++)
    {
        flow = decompressed(sta);
        bool ok = 1;
        for (int i = 0; i < n; i++) if (flow[i] > a[i]) ok = 0;
        if (!ok) continue;
        for (int j = 0; j < m; j++) for (int i = 0; i < n; i++)
        {
            int ni = i + 1, nj = j;
            if (ni == n) nj ++, ni = 0;
            for (int u = 0; u <= b[j]; u++)
            {
                for (int f = 0; f <= 4; f++)
                {
                    if (u + f > b[j] || flow[i] + f > a[i]) break;
                    nf = flow;
                    nf[i] += f;
                    int v = u + f;
                    if (i == n - 1) v = 0;
                    int nsta = compressed(nf);
                    int temp = dp[sta][i][j][u] + (f ? c[i][j] : 0);
                    //printf ("%d -> %d\n", dp[sta][i][j][u], temp);
                    if (nj < m) dp[nsta][ni][nj][v] = min (dp[nsta][ni][nj][v], temp);
                    if (ck(nf)){
                        //printf ("! %d\n", temp);
                        ans = min (ans, temp);
                    }
                }
            }
        }
    }
    if (ans == inf) puts ("-1");
    else printf ("%d\n", ans);
    return 0;
}