만드는 중입니다

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

모스크바 숫자

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

요약
알파벳과 물음표로 이루어진 템플릿의 각 물음표를 모스크바 숫자 기호로 바꿔 값이 최대가 되는 값과 그 문자열을 출력합니다.
난이도

어려움10점 중 8점

유형
문자열, 그리디, 동적 계획법
정답자
아직 제출이 없습니다

문제

당신은 아마 로마 숫자를 알고 있을 것이다. 또 모스크바가 제3의 로마라는 말도 들어 보았을 것이다. 그래서 로마 숫자를 본떠 그보다 발전된 체계인 모스크바 숫자를 만들었다.

모스크바 숫자의 숫자는 영문 대문자 A부터 Z까지이다. 모스크바 숫자는 숫자가 여러 개 이어진 문자열이다. 각 숫자의 값은 아래 표와 같다.

숫자값숫자값숫자값숫자값
A11H5⋅1035 \cdot 10 ^ {3}O10710 ^ {7}V5⋅10105 \cdot 10 ^ {10}
B55I10410 ^ {4}P5⋅1075 \cdot 10 ^ {7}W101110 ^ {11}
C1010J5⋅1045 \cdot 10 ^ {4}Q10810 ^ {8}X5⋅10115 \cdot 10 ^ {11}
D5050K10510 ^ {5}R5⋅1085 \cdot 10 ^ {8}Y101210 ^ {12}
E100100L5⋅1055 \cdot 10 ^ {5}S10910 ^ {9}Z5⋅10125 \cdot 10 ^ {12}
F500500M10610 ^ {6}T5⋅1095 \cdot 10 ^ {9}
G10310 ^ {3}N5⋅1065 \cdot 10 ^ {6}U101010 ^ {10}

수의 값은 각 숫자가 기여하는 값의 합이다. 어떤 숫자의 오른쪽에 그 숫자보다 큰 숫자가 없으면 그 숫자의 기여값은 숫자의 값과 같다. 그렇지 않으면 기여값은 숫자의 값에 음수 부호를 붙인 값이다.

예를 들어 BBA의 값은 5+5+1=11이다. BBBC의 값은 -5+(-5)+(-5)+10=-5이다. ABC의 값은 -1+(-5)+10=4이다. BAC의 값은 -5+(-1)+10=4이다. ACA의 값은 -1+10+1=10이다.

영문 대문자와 물음표 ?로 이루어진 문자열이 여러 개 주어진다. 각 물음표를 모스크바 숫자의 숫자 중 하나로 바꿀 때, 만들 수 있는 가장 큰 수를 구하라.

입력

첫 줄에 정수 tt (1≤t≤500001 \le t \le 50000)가 주어진다. 이는 문자열의 개수이다. 다음 tt개의 줄에 영문 대문자와 ?로 이루어진 문자열 sis_i가 한 줄에 하나씩 주어진다. 모든 문자열 길이의 합은 300000을 넘지 않는다.

출력

각 문자열마다 두 줄을 출력한다. 첫 줄에는 만들 수 있는 가장 큰 수의 값을 십진수로 출력한다. 둘째 줄에는 그 값을 얻도록 물음표를 영문 대문자로 바꾼 문자열을 출력한다.

예제1

  1. 예제 1

    입력
    4
    BBBC
    ????
    A?B?C?D
    YYYYY?
    
    예상 출력
    -5
    BBBC
    20000000000000
    ZZZZ
    15000000000034
    AZBZCZD
    6000000000000
    YYYYYY