Problemas
최근에 프로그래밍에 재미를 붙이기 시작한 세진이는 프로그래밍을 할 때 키보드에서 손을 때기 싫어했고, 마우스도 쓰지 않았다.
게다가 너무나 게을러져 키보드조차 많이 누르는 것도 원하지 않게 되었는데, 어느 날 소스코드를 유심히 보고 있던 세진이는 Visual C++ 6.0 소스 편집창 내의 화면상에 커서를 원하는 위치로 이동할 때 항상 최소한의 키 누르기를 이용해서 해당 위치로 도착하는 것을 목표로 방법을 찾고 있었는데, 단순히 패턴이 있는 것이 아니었기에 쉽지가 않다는 것을 알게 되었고, 친구인 당신과 함께 프로그래밍을 이용해 풀어보고자 한다.
사용가능한 키는 다음과 같으며, 한번 누를 때 마다 한 번의 키 누름 횟수로 간주한다.
1. 화살표키(4방향) - 커서를 원하는 방향으로 한 칸 이동
2. home - 문자열 행의 첫 번째 열에 이동
3. end - 문자열 행의 마지막 열로 이동
4. top - 문자열의 맨 첫 번째 행으로 이동 시키며, 열의 위치는 이전열의 위치와 동일
5. bottom - 문자열의 맨 마지막 행으로 이동 시키며, 열의 위치는 이전열의 위치와 동일
6. word left - 커서의 왼쪽에서 가장 가까운 단어의 맨 앞글자로 이동
7. word right - 커서의 오른쪽에서 가장 가까운 단어의 맨 앞글자로 이동
* 6, 7 번의 경우 왼쪽 혹은 오른쪽에 단어가 없을 경우 그대로 멈춰있고, 커서가 앞 글자에 있더라도 무조건 이동해야 한다.
Entrada
첫 번째 줄에는 소스코드의 행의 개수 N(N≤50)이 입력되며, 그 다음 줄에는 현재 커서의 위치가 그 다음 줄에는 이동하고자 하는 커서의 위치가 행과 열의 위치로 주어진다. 여기서 행과 열의 처음을 뜻하는 숫자는 0이다.
아래 입력 예의 경우 공백은 존재하지 않으나, 공백이 포함되는 경우가 있음을 간과하면 안 된다.
그 다음 줄부터는 N개의 줄에는 소스코드의 한 줄이 입력이 된다.
소스코드는 알파벳 영문자와 공백으로 이루어져 있으며, 길이는 50자 이하이다.
Salida
시작 커서 위치에서 원하고자 하는 위치로 이동할 때의 최소 키 누름 횟수를 출력한다.
Ejemplo
3
0 0
2 4
AAAAAA
BBBBB
CCCCCCCC
3