만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

IPvX

시간 제한2초메모리 제한1024 MB

요약
점유된 IPvX 주소 목록과 시작 주소 a, b가 주어질 때, 두 컴퓨터의 주소가 연속되도록 만드는 최소 가상 점유 횟수를 구합니다. 불가능하면 -1을 출력합니다.
난이도

보통10점 중 7점

유형
구현, 해시맵, 그리디
정답자
아직 제출이 없습니다

문제

쥬만지는 상호작용형 게임이라 그 안에서는 거의 무슨 일이든 일어날 수 있다. 이번에도 주인공들이 길을 잘못 들어 악당 과학자 닥터 DHCP의 포로가 되었다. 닥터 DHCP는 주인공들에게 관심이 없어서, 며칠째 풀지 못한 문제를 도와주면 풀어 주겠다고 한다.

닥터 DHCP의 연구실에는 nn대의 컴퓨터가 있고, ii번째 컴퓨터의 IPvX 주소는 cic_i이다. IPvX 주소는 일반적인 IPv4 주소와 같지만 그룹이 4개가 아니라 xx개일 수 있다. 따라서 모든 IPvX 주소는 a1.a2.a3.….axa_1.a_2.a_3. \ldots .a_x 형태이고, 각 aia_i는 0 이상 255 이하이다. 주소의 대소 관계는 다음과 같이 정한다. 어떤 0≤k<x0 \le k < x에 대해 a1=b1a_1 = b_1, …\ldots, ak=bka_k = b_k이고 ak+1<bk+1a_{k+1} < b_{k+1}이면 a1.a2.….axa_1.a_2. \ldots .a_x는 b1.b2.….bxb_1.b_2. \ldots .b_x보다 작다.

이 문제에서 다음 주소는 현재 주소보다 큰 주소 중 가장 작은 주소이고, 이전 주소는 현재 주소보다 작은 주소 중 가장 큰 주소이다. 예를 들어 0.123.123.1230.123.123.123의 다음 주소는 0.123.123.1240.123.123.124, 0.123.123.2550.123.123.255의 다음 주소는 0.123.124.00.123.124.0, 0.255.255.2550.255.255.255의 다음 주소는 1.0.0.01.0.0.0이다.

닥터 DHCP는 로컬 네트워크에 새 컴퓨터 두 대를 추가하려 한다. 이 네트워크는 다음 방식으로 IPvX 주소를 배정한다. 첫 번째 컴퓨터는 먼저 주소 aa를 받는다. 그 주소가 사용 중이면, 다음 주소가 있을 때 다음 주소로 바꾸고 다시 확인한다. 첫 번째 컴퓨터가 주소를 받은 뒤, 두 번째 컴퓨터는 주소 bb를 받고 같은 방식으로 동작한다. 현재 주소가 사용 중이면 이전 주소가 있을 때 이전 주소를 시도하며, 이런 식으로 계속 이전 주소로 옮긴다.

닥터 DHCP의 목표는 두 컴퓨터가 주소를 받은 뒤 두 번째 컴퓨터의 주소가 첫 번째 컴퓨터의 주소 바로 다음 주소가 되게 하는 것이다. 항상 가능한 것은 아니므로, 닥터 DHCP에게는 가상 점유 기능이 있다. 그는 로컬 네트워크에 요청을 보내 어떤 주소든 점유 상태로 만들 수 있다. 그 주소는 어느 컴퓨터의 것도 아니지만 사용 중으로 간주된다. 닥터 DHCP는 이 연산을 가능한 한 적게 쓰고 싶어 한다.

주어진 aa와 bb에 대해, 두 컴퓨터가 주소를 받은 뒤 두 주소가 서로 인접하도록 만드는 데 필요한 가상 점유 연산의 최소 횟수를 구하라. 불가능하면 −1-1을 출력한다.

입력

첫 줄에 nn과 xx가 주어진다 (0≤n≤1050 \le n \le 10^5, 1≤x≤81 \le x \le 8). 다음 nn개 줄에는 각 컴퓨터의 주소 cic_i가 p1.p2.p3.….pxp_1.p_2.p_3. \ldots .p_x 형식으로 주어진다 (0≤pj≤2550 \le p_j \le 255). n+2n+2번째 줄과 n+3n+3번째 줄에는 첫 번째와 두 번째 컴퓨터가 처음 받는 주소 aa와 bb가 같은 형식으로 주어진다. 모든 컴퓨터 주소는 서로 다르며, aa는 bb보다 작다.

출력

필요한 가상 점유 연산의 최소 횟수를 한 줄에 출력한다. 불가능하면 −1-1을 출력한다.

힌트

첫 번째 테스트에서는 주소 123.123.123.124를 점유하면 충분하다. 그러면 컴퓨터들이 각각 123.123.123.121과 123.123.123.122를 받는다. 문제에 나온 테스트 입력은 첫 번째 테스트 그룹에 속하지 않지만, 채점을 통과하려면 반드시 맞아야 한다.

예제2

  1. 예제 1

    입력
    2 4
    123.123.123.123
    123.123.123.125
    123.123.123.121
    123.123.123.125
    
    예상 출력
    1
    
  2. 예제 2

    입력
    2 4
    123.123.123.123
    123.123.123.125
    123.123.123.122
    123.123.123.125
    
    예상 출력
    -1