기지방호
시간 제한1초메모리 제한1024 MB
매일 C[1]에서 시작해 주어진 진법 l[k]로 끝나도록 T개의 진법을 배열할 때, 연속한 진법 사이 해밍 거리의 제곱 합을 최소로 만드는 루틴의 총피로도를 구한다.
문제
오늘부터 일 동안 훈련 기간이다. 훈련 기간에 매일 부대원들은 기지방호 전술집에서 선별한 진법들을 시연해야 한다.
훈련을 위해 기지방호 전술집에서 개의 진법을 선별하여 각각 번부터 번까지 번호를 붙였고, 번에 대한 진법을 C\[x]$$(1 \le x \le F)로 나타내기로 했다. 각 진법은 훈련하는 장소에 맞추어 칸으로 주어진다. 는 진법 의 번째 행, 번째 열을 의미하며, 해당 칸에 사람이 서 있어야 하면 , 아니면 으로 주어진다. 다만 항상 은 모든 , 에 대해 을 만족한다.
훈련의 첫째 날은 진법부터 시작하며, 둘째 날부터는 전날의 마지막 진법에서 시작한다. 이후 하루가 끝날 때까지 회에 걸쳐 추가로 진법을 시연한다.
진법이 바뀜에 따라 병사들의 피로도는 다음과 같이 누적된다. 현재 시연 중인 진법이 , 다음에 시연할 진법이 라면 피로도는 와 가 다른 모든 쌍의 개수를 제곱한 값만큼 더해진다.
현재 날마다 마지막으로 시연할 진법들만 정해져 있으므로, 주임원사님은 으뜸병사를 불러 선별된 진법들로 나머지 시연할 진법들을 잘 채워서 병사들의 피로도를 최소화하는 루틴으로 만들라고 명령했다. 으뜸병사를 도와서 피로도를 최소화하는 루틴을 짰을 때, 총피로도는 어느 정도인지 한번 알아보자.
입력
첫 번째 줄에 기지방호 전술집에서 선별한 진법의 개수 , 훈련 기간 , 하루에 시연할 진법의 개수 , 그리고 훈련 장소의 크기 , 이 공백으로 구분되어 정수로 주어진다.
이후 두 번째 줄부터 각 진법마다 줄씩 줄에 걸쳐 진법의 정보가 순서대로 주어진다.
각 진법의 정보는 줄에 걸쳐 개의 값이 공백으로 구분되어 정수로 주어진다. 번째 줄의 번째 값이 이며, 각 값은 또는 로 주어진다.
이후 첫 번째 날부터 번째 날까지 마지막으로 시연할 진법의 번호 이 공백으로 구분되어 정수로 주어진다.
출력
첫 번째 줄에 피로도를 최소화하는 루틴의 총피로도를 출력한다.
제한
- 모든 , 에 대해