울타리 걷어내기
시간 제한2초메모리 제한512 MB
인접한 구역 사이 울타리를 뜯어 모든 구역이 이어지도록 하고 뜯어낸 길이 합을 가장 작게 만듭니다.
문제
농부 존은 자기 소 상당수가 광장 공포증이 있다는 것을 알아차렸다. 넓게 트인 곳을 무서워한다는 뜻이다. 소가 풀을 뜯을 때 덜 무서워하도록, 존은 큰 밭에 남북 방향의 세로 울타리와 동서 방향의 가로 울타리를 세워 작은 구역 여러 개로 나누었다.
큰 밭은 과 를 마주 보는 두 꼭짓점으로 하는 직사각형이다. 존은 서로 다른 위치 에 세로 울타리 개를 세웠고 (), 위치 의 울타리는 에서 까지 이어진다. 또 위치 에 가로 울타리 개를 세웠고 (), 위치 의 울타리는 에서 까지 이어진다. 세로 울타리는 가로 울타리와 모두 교차하므로 밭은 개의 구역으로 나뉜다.
그런데 존은 울타리에 문을 내는 것을 완전히 잊었다. 소는 자기가 갇힌 구역을 벗어나 밭 전체를 돌아다니지 못한다. 존은 울타리 일부를 걷어내서 이 문제를 해결하려고 한다. 이웃한 구역 쌍을 골라 그 사이를 막고 있는 울타리를 전체 길이만큼 걷어내고, 이렇게 뚫은 통로만으로 소가 밭 어디든 갈 수 있게 만들려고 한다.
예를 들어 존이 다음과 같은 울타리 배치에서 시작한다고 하자.
+---+--+
| | |
+---+--+
| | |
| | |
+---+--+
그러면 이렇게 열 수 있다.
+---+--+
| |
+---+ +
| |
| |
+---+--+
존이 걷어내야 하는 울타리의 최소 총 길이를 구하여라.
입력
첫째 줄에 , , , 이 주어진다 (, , ). 다음 개의 줄에 이 한 줄에 하나씩 주어지고, 그 뒤 개의 줄에 이 한 줄에 하나씩 주어진다. 는 서로 다르고 도 서로 다르다.
출력
걷어내야 하는 울타리의 최소 총 길이를 출력한다. 이 값은 32비트 정수 범위를 넘을 수 있다.