# -*- coding: utf-8 -*-



from scipy.sparse.csgraph import dijkstra



H, W = list(map(int, input().split()))

C = [None] * 10

for i in range(10):

    C[i] = list(map(int, input().split()))

field = [None] * H

for i in range(H):

    field[i] = list(map(int, input().split()))



# ちょうどデータの持ち方が隣接行列なので、そのままscipyのダイクストラ使ってみる

dist = dijkstra(C)



ans = 0

for i in range(H):

    for j in range(W):

        if field[i][j] != -1:

            # 該当マスの数字から1への距離を足していくだけ

            ans += dist[field[i][j]][1]

print((int(ans)))

# -*- coding: utf-8 -*-



H, W = list(map(int, input().split()))

C = [None] * 10

for i in range(10):

    C[i] = list(map(int, input().split()))

field = [None] * H

for i in range(H):

    field[i] = list(map(int, input().split()))



# ワーシャルフロイドで全頂点の最短距離

for k in range(10):

    for i in range(10):

        for j in range(10):

            C[i][j] = min(C[i][j], C[i][k] + C[k][j])



ans = 0

for i in range(H):

    for j in range(W):

        if field[i][j] != -1:

            # 該当マスの数字から1への距離を足していくだけ

            ans += C[field[i][j]][1]

print(ans)

# -*- coding: utf-8 -*-
from scipy.sparse.csgraph import dijkstra

H, W = list(map(int, input().split()))
C = [None] * 10
for i in range(10):
    C[i] = list(map(int, input().split()))
field = [None] * H
for i in range(H):
    field[i] = list(map(int, input().split()))
# ちょうどデータの持ち方が隣接行列なので、そのままscipyのダイクストラ使ってみる
dist = dijkstra(C)
ans = 0
for i in range(H):
    for j in range(W):
        if field[i][j] != -1:
            # 該当マスの数字から1への距離を足していくだけ
            ans += dist[field[i][j]][1]
print((int(ans)))

# -*- coding: utf-8 -*-
H, W = list(map(int, input().split()))
C = [None] * 10
for i in range(10):
    C[i] = list(map(int, input().split()))
field = [None] * H
for i in range(H):
    field[i] = list(map(int, input().split()))
# ワーシャルフロイドで全頂点の最短距離
for k in range(10):
    for i in range(10):
        for j in range(10):
            C[i][j] = min(C[i][j], C[i][k] + C[k][j])
ans = 0
for i in range(H):
    for j in range(W):
        if field[i][j] != -1:
            # 該当マスの数字から1への距離を足していくだけ
            ans += C[field[i][j]][1]
print(ans)

-from scipy.sparse.csgraph import dijkstra - -# ちょうどデータの持ち方が隣接行列なので、そのままscipyのダイクストラ使ってみる -dist = dijkstra(C) +# ワーシャルフロイドで全頂点の最短距離 +for k in range(10): +    for i in range(10): +        for j in range(10): +            C[i][j] = min(C[i][j], C[i][k] + C[k][j]) -            ans += dist[field[i][j]][1] -print((int(ans))) +            ans += C[field[i][j]][1] +print(ans)