만드는 중입니다

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

뒤섞인 비밀번호

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

요약
문자열이 주어질 때, 중간 이후에서 접미사가 같은 길이의 접두사와 정확히 한 글자만 다른 가장 작은 위치를 찾는다.
난이도

보통10점 중 6점

유형
문자열, 문자열 매칭, 해시맵, 이분 탐색
정답자
아직 제출이 없습니다

문제

앨리스는 비밀번호를 들으면서 받아 적고 있다. 상대가 비밀번호를 한 번 더 불러 주기에, 잘못 적은 곳이 없는지 확인하려고 계속 받아 적는다. 그런데 글자 하나를 잘못 적었고, 잠시 집중이 흐트러진 사이에 뒷부분을 놓쳤다. 그래서 두 번째 반복이 어디서 시작하는지 알 수 없다.

영어 소문자로 이루어진 문자열 S[0…n−1]S[0 \ldots n-1]이 주어진다. 비밀번호의 반복이 시작될 수 있는 가장 앞 위치를 찾아라. 정확히는 다음 조건을 모두 만족하는 인덱스 ii를 구한다.

  • n2≤i<n\frac{n}{2} \le i < n
  • S[i…n−1]S[i \ldots n-1]과 S[0…n−i−1]S[0 \ldots n-i-1]이 정확히 한 자리에서만 다르다
  • 앞의 두 조건을 만족하는 인덱스 중에서 ii가 가장 작다

입력

첫째 줄에 문자열의 길이 nn이 주어진다 (2≤n≤500 0002 \le n \le 500\,000).

둘째 줄에 영어 소문자로 이루어진 길이 nn의 문자열 SS가 주어진다.

출력

조건을 만족하는 인덱스 ii를 한 줄에 출력한다. 그런 인덱스가 없으면 −1-1을 출력한다.

힌트

첫 번째 예제에서 비교하는 두 문자열은 abaa와 aaaa다.

예제3

  1. 예제 1

    입력
    8
    abaaaaaa
    
    예상 출력
    4
    
  2. 예제 2

    입력
    9
    abcdefghi
    
    예상 출력
    8
    
  3. 예제 3

    입력
    5
    aaaaa
    
    예상 출력
    -1