n, m, k = gets.split.map(&:to_i) a = gets.split.map { |x| x.to_i - 1 } t = Array.new(n) { gets.split.map(&:to_i) } lst = [] n.times do |i| lst.push(i) end if m == 0 ans = 0 else ans = 10 ** 18 end lst.permutation(m) do |p| if not a.include?(p[-1]) next end cost = 0 (m-1).times do |i| cost += t[p[i]][p[i+1]] end ans = [ans, cost].min end puts ans