#include <bits/stdc++.h>
using namespace std;
typedef int ll;
typedef pair<ll,ll> pll;
#define fi first
#define sc second
#define pb push_back
#define mp make_pair
#define FOR(i,a,b) for(ll i=a;i<=b;i++)
#define FORD(i,b,a) for(ll i=b;i>=a;i--)
const ll N = 201;
const ll M = 1001;
const ll oo = 1e9+5;
ll n,m,k;
ll a[N][N];
ll q[M];
ll f[N][N][M];
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
// freopen("serv.inp","r",stdin);
// freopen("serv.out","w",stdout);
cin>>n>>m;
FOR(i,1,n)
FOR(j,1,n) cin>>a[i][j];
FOR(i,1,m)
cin>>q[i];
q[0] = 3;
ll a1, a2, a3;
FORD(k,m,1)
FOR(i,1,n)
FOR(j,i + 1,n){
if (f[i][j][k] != 0) continue;
if (i == q[k - 1] || j == q[k - 1]) continue;
a1 = a2 = a3 = oo;
if (i != q[k] && j != q[k] ) a1 = f[i][j][k+1] + a[q[k-1]][q[k]];
if (i != q[k] && q[k-1] != q[k] && i != q[k-1])
a2 = f[min(i, q[k - 1])][max(i, q[k-1])][k+1] + a[j][q[k]];
if (j != q[k] && q[k-1] != q[k] && j != q[k-1])
a3 = f[min(j, q[k - 1])][max(j, q[k-1])][k+1] + a[i][q[k]];
f[i][j][k] = min( {a1, a2, a3} );
}
cout<<f[1][2][1];
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgaW50IGxsOwp0eXBlZGVmIHBhaXI8bGwsbGw+IHBsbDsKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNjIHNlY29uZAojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIG1wIG1ha2VfcGFpciAKI2RlZmluZSBGT1IoaSxhLGIpIGZvcihsbCBpPWE7aTw9YjtpKyspCiNkZWZpbmUgRk9SRChpLGIsYSkgZm9yKGxsIGk9YjtpPj1hO2ktLSkKY29uc3QgbGwgTiA9IDIwMTsKY29uc3QgbGwgTSA9IDEwMDE7CmNvbnN0IGxsIG9vID0gMWU5KzU7CmxsIG4sbSxrOwpsbCBhW05dW05dOwpsbCBxW01dOwpsbCBmW05dW05dW01dOwppbnQgbWFpbigpewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7Y291dC50aWUoMCk7CiAgICAvLyBmcmVvcGVuKCJzZXJ2LmlucCIsInIiLHN0ZGluKTsKICAgIC8vIGZyZW9wZW4oInNlcnYub3V0IiwidyIsc3Rkb3V0KTsKICAgIGNpbj4+bj4+bTsKICAgIEZPUihpLDEsbikKICAgIEZPUihqLDEsbikgY2luPj5hW2ldW2pdOwogICAgCiAgICBGT1IoaSwxLG0pCiAgICAgICAgY2luPj5xW2ldOwogICAgcVswXSA9IDM7CiAgICBsbCBhMSwgYTIsIGEzOwogICAgRk9SRChrLG0sMSkKICAgIEZPUihpLDEsbikKICAgIEZPUihqLGkgKyAxLG4pewogICAgICAgIGlmIChmW2ldW2pdW2tdICE9IDApIGNvbnRpbnVlOwogICAgICAgIGlmIChpID09IHFbayAtIDFdIHx8IGogPT0gcVtrIC0gMV0pIGNvbnRpbnVlOwogICAgICAgIGExID0gYTIgPSBhMyA9IG9vOwogICAgICAgIGlmIChpICE9IHFba10gJiYgaiAhPSBxW2tdICkgYTEgPSBmW2ldW2pdW2srMV0gKyBhW3Fbay0xXV1bcVtrXV07CiAgICAgICAgaWYgKGkgIT0gcVtrXSAmJiBxW2stMV0gIT0gcVtrXSAmJiBpICE9IHFbay0xXSkKICAgICAgICAgICAgYTIgPSBmW21pbihpLCBxW2sgLSAxXSldW21heChpLCBxW2stMV0pXVtrKzFdICArIGFbal1bcVtrXV07CiAgICAgICAgCiAgICAgICAgaWYgKGogIT0gcVtrXSAmJiBxW2stMV0gIT0gcVtrXSAmJiBqICE9IHFbay0xXSkgCiAgICAgICAgICAgIGEzID0gZlttaW4oaiwgcVtrIC0gMV0pXVttYXgoaiwgcVtrLTFdKV1baysxXSAgKyBhW2ldW3Fba11dOwogICAgICAgIGZbaV1bal1ba10gPSBtaW4oIHthMSwgYTIsIGEzfSApOwogICAgfQogICAgY291dDw8ZlsxXVsyXVsxXTsKfQo=