변신로봇

길이가 같은 N개의 숫자 문자열이 주어지고, 두 상태 사이의 이동 비용이 각 자리 숫자 차의 제곱합일 때 시작 상태에서 목표 상태로 가는 최소 비용을 구한다.

보통6그래프최단 경로구현수학면접 대비아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

승균이는 변신로봇에 푹 빠져 있다. 한 분야가 극에 달한 사람은 그것으로 세상을 이해한다는 말이 있는데, 승균이가 바로 그랬다. 시시때때로 감정이 변하는 사람을 보면서 사람도 변신로봇과 같다고 생각했고, 세상의 흐름은 거대한 변신로봇을 조립하는 과정이며 그 안에서 우리의 역할은 부품으로서 다른 부품과 올바르게 맞물리는 것이라고 믿었다. 승균이를 지켜보던 선생님 준하는 마음이 편치 않았다. 변신로봇을 소개한 것은 과학과 수학에 관심을 갖게 하려는 뜻이었는데, 정작 승균이는 철학가가 되어가고 있었기 때문이다. 보다 못한 준하는 변신로봇에 동전투입기를 박아버렸다.

이제 변신을 하려면 동전을 넣어야 한다. 부품의 형태는 숫자 하나로 나타낼 수 있고, 로봇의 변신 상태는 그 숫자를 순서대로 늘어놓은 숫자열이다. 모든 변신 상태는 같은 길이로 적혀 있다. 한 변신 상태에서 다른 변신 상태로 곧바로 변신하는 데 드는 돈은 같은 자리에 놓인 두 숫자의 차를 제곱해서 모두 더한 값이다. 예를 들어 123123에서 222222로 변신하면 (12)2+(22)2+(32)2=2(1-2)^2 + (2-2)^2 + (3-2)^2 = 2가 든다.

가는 길에 다른 변신 상태를 거쳐도 되고, 한 번 변신할 때마다 그 변신의 돈을 낸다. 수학을 전혀 못하는 승균이를 대신해, 현재 상태에서 승균이가 원하는 상태를 만드는 데 드는 돈의 최솟값을 구하자.

입력

첫째 줄에 변신 상태의 개수 NN이 주어진다. (1N10001 \le N \le 1000)

둘째 줄부터 NN개의 줄에 각 변신 상태를 나타내는 숫자열이 한 줄에 하나씩 주어진다. 숫자열의 길이는 100100을 넘지 않고, 모든 숫자열의 길이는 같으며, 00으로 시작할 수도 있다.

마지막 줄에 현재 변신 상태의 번호와 승균이가 원하는 변신 상태의 번호가 공백을 사이에 두고 주어진다. 번호는 입력된 순서대로 11번부터 매긴다. 두 번호는 같을 수도 있다.

출력

첫째 줄에 현재 상태에서 승균이가 원하는 상태를 만드는 데 드는 돈의 최솟값을 출력한다.