#include<stdio.h>
#include<bits/stdc++.h>
#define N 210
#define MOD 1000000009
#define esp 1e-8
#define INF 9999999999999
#define LL long long
#define rep(i,a,b,g) for(LL i=a;i<=b;i+=g)
#define rem(i,a,b,g) for(LL i=a;i>=b;i-=g)
#define repn(i,a,b,g) for(LL i=a;i<b;i+=g)
#define remn(i,a,b,g) for(LL i=a;i>b;i-=g)
#define pll pair<LL,LL>
#define mkp(x,y) make_pair(x,y)
#define i128 __int128
#define lowbit(x) ((x)&(-(x)))
using namespace std;
LL t,l,n,c[201][201],ff[201][201],f[201][201],a[1001];
int main()
{
t=1;
while(t--)
{
cin>>l>>n;
rep(i,1,l,1)rep(j,1,l,1)cin>>c[i][j];
rep(i,1,n,1)cin>>a[i];
rep(j,1,l,1)rep(k,1,l,1)f[j][k]=INF;
a[0]=1;
f[2][3]=0;
rep(i,0,n-1,1)
{
rep(j,1,l,1)rep(k,1,l,1)ff[j][k]=INF;
rep(x,1,l,1)rep(y,1,l,1)
{
ff[a[i]][y]=min(ff[a[i]][y],f[x][y]+c[x][a[i+1]]);
ff[x][a[i]]=min(ff[x][a[i]],f[x][y]+c[y][a[i+1]]);
ff[x][y]=min(ff[x][y],f[x][y]+c[a[i]][a[i+1]]);
}
rep(x,1,l,1)rep(y,1,l,1)f[x][y]=ff[x][y];
}
LL mc=INF;
rep(i,1,l,1)rep(j,1,l,1)
{
mc=min(mc,f[i][j]);
}
cout<<mc<<endl;
}
return 0;
}