산책 (small)

아직 제출이 없습니다시간 제한1초메모리 제한1024 MB

문제

코로나로 인하여 확찐자가 되버려 오늘부터 산책을 하려고 한다. 이를 위해 산책할 경로를 정하려고 한다.

현재 있는 곳 SS에서 출발하여 SS와 다른 곳인 EE를 찍고 다시 SS로 돌아오는 경로로 만들려고 한다. 산책을 할 때 이미 갔던 정점을 또 가기 싫어 EE에서 SS로 올 때 SS에서 EE로 가는 도중에 방문한 정점을 제외한 다른 정점으로 이동하려고 한다. 또한 산책 거리가 긴 것을 싫어하여 SS에서 EE로 가는 가장 짧은 거리와 EE에서 SS로 가는 가장 짧은 거리를 원한다.

정점 SS에서 정점 EE로 이동할 때, 가장 짧은 거리의 경로가 여러개 나올 수 있다. 그 중, 정점 SS에서 정점 EE로 이동한 경로를 나열했을 때, 사전순으로 가장 먼저 오는 것을 선택한다.

예를 들어, 정점 1에서 정점 2로 이동한다고 했을 때, 가장 짧은 거리의 경로가 1 4 3 21 3 4 2가 있다고 가정을 해보자. 두 개의 경로중 사전순으로 먼저 오는 것은 1 3 4 2이므로 정점 1에서 정점 2로 가는 최단 경로 중 두 번째 것을 선택한다.

이와 같이 산책 경로를 정할 때, 산책 전체 경로의 거리(SS에서 EE로 가는 거리 + EE에서 SS로 가는 거리)를 구해보자.

입력

첫 번째 줄에는 정점의 개수 NN과 두 정점 사이를 잇는 도로의 개수 MM이 공백으로 구분되어 주어진다.

두 번째 줄부터 M+1M + 1 번째 줄까지 정점 AA, BB가 공백으로 구분되어 주어진다. 정점 AA와 정점 BB 사이의 거리는 항상 1이다. 이때, 정점 AA와 정점 BB는 양방향으로 이동해도 된다.

정점 AA와 정점 BB를 잇는 도로는 두개 이상 주어지지 않는다.

M+2M + 2번째 줄에는 정점 SS와 정점 EE가 공백으로 구분되어 주어진다.

산책을 할 수 있는 경로가 있는 데이터만 주어진다.

출력

산책의 전체 경로의 길이를 출력한다.

제한

  • 1N10,0001 \le N \le 10,000
  • 1M50,0001 \le M \le 50,000
  • 1S,EN1 \le S, E \le N
  • 산책을 할 수 있는 경로가 있는 데이터만 주어진다.