← 문제 목록으로
한국어

언어

소어그래프

_junick 출제 · UCPC 2025 예선

문제 정보
시간 제한 메모리 제한 공개일
1000 ms 1024 MB

문제

정점의 개수가 \(N\)인 소어그래프(XOR Graph)는 다음과 같이 정의된다.

  • 소어그래프는 \(0\)부터 \(N-1\)까지의 번호가 붙은 \(N\)개의 정점을 가진다.
  • 각 정점 \(i\)에 대해, 정점 \(i\)에서 정점 \(i\oplus t\)와 정점 \((i\oplus t)+1\)로 가는 방향 간선이 존재한다.
  • 단, 간선을 통해 이동하려는 도착 정점의 번호가 \(N-1\)을 초과하는 경우, 해당 간선은 존재하지 않는다.

여기서 \(\oplus\) 기호는 Bitwise XOR을 나타낸다.

정점의 개수 \(N\), 시작 정점 \(x\), 도착 정점 \(y\), 그리고 음이 아닌 정수 \(t\)가 주어질 때, 정점 \(x\)에서 정점 \(y\)로 이동하기 위해 지나야 하는 간선의 최소 개수를 구하는 프로그램을 작성하라.

입력

첫째 줄에 정수 \(N\), \(x\), \(y\), \(t\)가 공백으로 구분되어 주어진다. (\(2 \leq N \leq 10^{18}\); \(0 \leq x, y < N\); \(x \neq y\); \(0 \leq t < 2^{20}\))

출력

정점 \(x\)에서 정점 \(y\)로 이동하기 위해 지나야 하는 간선의 최소 개수를 출력한다. 만약 정점 \(x\)에서 정점 \(y\)로 가는 경로가 존재하지 않는다면 \(-1\)을 출력한다.

예제

예제 입력 1

4 2 3 2

예제 출력 1

2

예제 입력 2

10 7 9 6

예제 출력 2

-1

예제 입력 3

165321961421 998244353 5029393147 98207

예제 출력 3

8242633