def d_wall(H, W, C, A):

    import scipy.sparse

    # cost[i][j]:数字iからjに移行するための最小コスト(float64で格納される)

    cost = scipy.sparse.csgraph.floyd_warshall(C)



    # 壁の各数字ごとにコストの値を参照、和を取る

    ans = 0

    for h in range(H):

        for w in range(W):

            if A[h][w] != -1:

                ans += cost[A[h][w]][1]  # 壁の数字から1へ変えるための最小コスト

    return int(ans)



H,W = [int(i) for i in input().split()]

C = [[int(i) for i in input().split()] for j in range(10)]

A = [[int(i) for i in input().split()] for j in range(H)]

print((d_wall(H, W, C, A)))
def d_wall(H, W, C, A):

    import scipy.sparse

    # cost[i][j]:数字iからjに移行するための最小コスト(float64で格納される)

    cost = scipy.sparse.csgraph.floyd_warshall(C)

    # 壁の各数字ごとに、その数字から1へ変えるための最小コストを計算し、和を取る

    return int(sum(cost[A[h][w]][1] for h in range(H) for w in range(W) if A[h][w] != -1))



H, W = [int(i) for i in input().split()]

C = [[int(i) for i in input().split()] for j in range(10)]

A = [[int(i) for i in input().split()] for j in range(H)]

print((d_wall(H, W, C, A)))
def d_wall(H, W, C, A):
    import scipy.sparse

    # cost[i][j]:数字iからjに移行するための最小コスト(float64で格納される)
    cost = scipy.sparse.csgraph.floyd_warshall(C)
    # 壁の各数字ごとにコストの値を参照、和を取る
    ans = 0
    for h in range(H):
        for w in range(W):
            if A[h][w] != -1:
                ans += cost[A[h][w]][1]  # 壁の数字から1へ変えるための最小コスト
    return int(ans)


H, W = [int(i) for i in input().split()]
C = [[int(i) for i in input().split()] for j in range(10)]
A = [[int(i) for i in input().split()] for j in range(H)]
print((d_wall(H, W, C, A)))

def d_wall(H, W, C, A):
    import scipy.sparse

    # cost[i][j]:数字iからjに移行するための最小コスト(float64で格納される)
    cost = scipy.sparse.csgraph.floyd_warshall(C)
    # 壁の各数字ごとに、その数字から1へ変えるための最小コストを計算し、和を取る
    return int(
        sum(cost[A[h][w]][1] for h in range(H) for w in range(W) if A[h][w] != -1)
    )


H, W = [int(i) for i in input().split()]
C = [[int(i) for i in input().split()] for j in range(10)]
A = [[int(i) for i in input().split()] for j in range(H)]
print((d_wall(H, W, C, A)))

-    # 壁の各数字ごとにコストの値を参照、和を取る -    ans = 0 -    for h in range(H): -        for w in range(W): -            if A[h][w] != -1: -                ans += cost[A[h][w]][1]  # 壁の数字から1へ変えるための最小コスト -    return int(ans) +    # 壁の各数字ごとに、その数字から1へ変えるための最小コストを計算し、和を取る +    return int( +        sum(cost[A[h][w]][1] for h in range(H) for w in range(W) if A[h][w] != -1) +    )