#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=200+10,inf=1000000000;

int map[10][10],vis[11],dis[11],m,n,sit[10],s[10],ans;

void Dijkstra(int a)
{
    for(int i=0;i<=9;i++) dis[i]=map[a][i];
    vis[a]=1;
    for(int i=0;i<9;i++)
    {
        int minn=inf,v=-1;
        for(int j=0;j<=9;j++)
        if(!vis[j]&&dis[j]<minn) {minn=dis[j];v=j;}
        if(v!=-1){
        vis[v]=1;
        for(int j=0;j<=9;j++)
            dis[j]=min(dis[j],dis[v]+map[v][j]);}
    }
}

int main()
{
    while(cin>>m>>n)
    {
        ans=0;
        int a;
        for(int i=0;i<=9;i++) {sit[i]=0;s[i]=0;}

        for(int i=0;i<=9;i++)
        for(int j=0;j<=9;j++)
        scanf("%d",&map[i][j]);

        for(int i=1;i<=m;i++)
        for(int j=1;j<=n;j++)
        {
            scanf("%d",&a);
            if(a!=-1) sit[a]++;
        }
        for(int i=0;i<=9;i++){
        for(int j=0;j<=9;j++) vis[j]=0;
        if(sit[i]!=0) Dijkstra(i);
        s[i]=dis[1];}
        for(int i=0;i<=9;i++)
            ans += s[i]*sit[i];
        cout<<ans<<endl;
    }
}
