import sys
input= sys.stdin.readline
n =int(input())
costs =[[0]* n for _ inrange(n)]for i inrange(n):
costs[i]=list(map(int,input().split()))defdfs(start, v, visited, value):global min_value
iflen(visited)== n:if costs[v][start]!=0:
min_value =min(min_value, value + costs[v][start])returnfor i inrange(n):if i != start and costs[v][i]!=0and i notin visited:
visited.append(i)# 방문 처리를 하고,
value += costs[v][i]
dfs(start, i, visited, value)# 다음 도시로 이동,
value -= costs[v][i]
visited.pop()# 그 도시의 모든 경우를 확인 하고, pop -> 다음 도시로
min_value = sys.maxsize
for i inrange(n):# start 증가
dfs(i, i,[i],0)print(min_value)