#include<stdio.h>
#include<algorithm>
#define MAX_V 10000
using namespace std;

int d[MAX_V][MAX_V];
int V=10;
int a[MAX_V][MAX_V];

void floyd(){
	for(int k=0;k<V;k++){
		for(int i=0;i<V;i++){
			for(int j=0;j<V;j++){
				d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
			}
		}
	}
}

int main(){
	int n,m,i,j,ans;
	while(scanf("%d%d",&n,&m)!=EOF){
		ans=0;
		for(i=0;i<10;i++){
			for(j=0;j<10;j++){
				scanf("%d",&d[i][j]);
			}
		}
		for(i=0;i<n;i++){
			for(j=0;j<m;j++){
				scanf("%d",&a[i][j]); 
			}
		}
		floyd();
		for(i=0;i<n;i++){
			for(j=0;j<m;j++){
				if(a[i][j]!=-1&&a[i][j]!=1){
					ans+=d[a[i][j]][1];
				}
			}
		}
		printf("%d\n",ans);
	}
}