팰린드롬 판별하기 2

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

요약
S가 팰린드롬인지 판별하기 위해 최악의 경우에 필요한 최소 질의 횟수를 구한다.
난이도

보통10점 중 7점

유형
문자열, 그리디, 구현, 수학
정답자
아직 제출이 없습니다

문제

이안이는 길이가 NN이고 각 문자는 영문 알파벳 소문자(a, b, ⋯\cdots, z) 중 하나인 문자열 SS를 가지고 있다. SS의 문자들을 뒤에서 앞으로 배열한 문자열이 SS와 정확하게 일치하면 SS를 팰린드롬이라고 한다. 예를 들어서 abccba는 팰린드롬이지만 abccbba는 팰린드롬이 아니다. 은성이는 SS의 일부 문자들을 알고 있고, SS가 팰린드롬인지 여부를 판별하려고 한다. 하지만, SS의 일부 문자들을 아는 것만으로는 팰린드롬 여부를 판별하기에 충분하지 않을 수 있으므로, 은성이는 이안이에게 다음과 같은 질의를 할 수 있다.

  • 은성이는 이안이에게 정수 i(1≤i≤N)i (1 \le i \le N)와 알파벳 소문자 cc의 순서쌍 (i,c)(i, c)를 질의한다.
  • 이안이는 SS의 왼쪽에서 ii번째 문자가 cc이면 11, 아니면 00으로 답한다.

은성이는 이안이를 귀찮게 하고 싶지 않기 때문에, 가능한 한 최소한의 질의로 팰린드롬 여부를 판별하려고 한다. 질의에 대한 답변은 질의를 하는 즉시 받을 수 있으므로, 답변에 따라 다음 질의가 달라져도 된다. 은성이가 이안이에게 KK번 이하의 질의를 하면, SS가 어떤 문자열인지에 관계없이 팰린드롬 여부를 판별할 수 있음이 보장되는 최소의 KK를 구하여라.

입력

첫째 줄에 정수 NN이 주어진다.

둘째 줄에 길이가 NN인 문자열 TT가 주어진다. 각 1≤i≤N1 \le i \le N에 대하여, TT의 ii번째 문자가 알파벳 소문자이면 은성이는 SS의 ii번째 문자가 TT의 ii번째 문자와 동일함을 알고 있다. TT의 ii번째 문자가 ?이면 은성이는 SS의 ii번째 문자가 무엇인지 알지 못한다.

출력

첫째 줄에 은성이가 팰린드롬 여부 판별을 보장할 수 있는 최소의 질의 횟수를 출력한다.

제한

  • 1≤N≤200 0001 \le N \le 200\ 000
  • SS의 각 문자는 영문 알파벳 소문자 또는 ?이다.

예제3

  1. 예제 1

    입력
    5
    a???b
    
    예상 출력
    0
    
  2. 예제 2

    입력
    6
    abccb?
    
    예상 출력
    1
    
  3. 예제 3

    입력
    9
    abc?????a
    
    예상 출력
    28