#include <bits/stdc++.h>

using namespace std;

int w[101][101];
vector< int > p;

int main(){

	int n, k;

	scanf( "%d%d", &n, &k );

	for( int i= 0, x; i< k; ++i ){
		scanf( "%d", &x );
		p.push_back(x);
	}

	for( int i= 1; i<= n; ++i )
		for( int j= 1; j<= n; ++j )
			scanf( "%d", &w[i][j] );

	for( int k= 1; k<= n; ++k )
		for( int i= 1; i<= n; ++i )
			for( int j= 1; j<= n; ++j )
				w[i][j]= min( w[i][j], w[i][k]+w[k][j] );

	int mini_cost= 0;

	for( int i= 1; i<= n; ++i ){
			
		int min= 1<<30;
		//int in;

		for( int j= 0; j< p.size(); ++j ){

			if( p[j]== i ){
				min= 0;
				//in= i;
				break;
			}

			if( min > w[i][p[j]] ){
				min= w[i][p[j]];
				//in= p[j];
			}
		}

		//cout << i << " " << in << " " << min << endl;

		mini_cost+= min;
	}

	cout <<  mini_cost << endl;

	return 0;

}
