아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

두 문자열

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

요약
두 숫자 문자열 s와 t가 주어질 때, 앞이 0이 아닌 s의 순환 이동으로 만들 수 있는 수에서 같은 조건의 t의 순환 이동으로 만든 수를 뺀 값의 최댓값을 구한다.
난이도

보통10점 중 7점

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

문제

문자열 s0s1…sn−1s_0s_1\ldots s_{n-1}을 kk칸 순환 시프트한 문자열을 sksk+1…sns1…sk−1s_ks_{k+1}\ldots s_n s_1\ldots s_{k-1}로 정의한다. 예를 들어 문자열 «abcde»를 두 칸 순환 시프트한 문자열은 «cdeab»이다. 이 문제에서는 앞으로 0부터 9까지의 십진 숫자로만 이루어진 문자열만 다룬다. 이런 문자열 중 첫 문자가 0이 아닌 문자열에는 그것을 십진 표기로 하는 수를 대응시킬 수 있다. 0으로 시작하는 문자열에는 어떤 수도 대응시키지 않는다. 예를 들어 문자열 123에는 수 백이십삼이 대응되고, 문자열 0123에는 어떤 수도 대응되지 않는다.

두 문자열 ss와 tt가 주어진다. SS를 문자열 ss의 모든 순환 시프트의 집합, TT를 문자열 tt의 모든 순환 시프트의 집합이라 하자. 예를 들어 ss = «1234»이면 SS는 문자열 «1234», «2341», «3412», «4123»을 포함한다. NUM(A)\mathrm{NUM}(A)를 집합 AA의 문자열에 대응되는 수의 집합이라 하자.

문자열 ss와 tt가 주어졌을 때 x−yx - y (단, xx는 NUM(S)\mathrm{NUM}(S)의 원소, yy는 NUM(T)\mathrm{NUM}(T)의 원소)의 꼴로 나타낼 수 있는 수 중 최댓값을 구하는 프로그램을 작성하라.

예를 들어 ss = «25», tt = «12»이면 NUM(S)\mathrm{NUM}(S)는 수 25와 52를, NUM(T)\mathrm{NUM}(T)는 수 12와 21을 포함한다. 이들의 모든 쌍별 차이는 25−12=1325 - 12 = 13, 25−21=425 - 21 = 4, 52−12=4052 - 12 = 40, 52−21=3152 - 21 = 31이다. 이 차이 중 최댓값은 40이다.

입력

입력 파일의 첫째 줄에는 문자열 ss, 둘째 줄에는 문자열 tt가 주어진다. 두 문자열은 비어 있지 않고 숫자로만 이루어져 있으며, 적어도 하나의 숫자는 0이 아니고, 길이는 3000자를 넘지 않는다.

출력

구한 수를 앞에 불필요한 0 없이 출력 파일에 출력한다.

예제2

  1. 예제 1

    입력
    25
    12
    
    예상 출력
    40
    
  2. 예제 2

    입력
    100
    1
    
    예상 출력
    99