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

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

같은 자릿수

시간 제한3초메모리 제한256 MB

요약
길이가 2 이상이고 첫 자리와 끝 자리가 같은 서로 겹치지 않는 부분 문자열들을 지워 남은 비어 있지 않은 문자열의 모든 자리가 서로 다르게 만드는 경우의 수를 센다.
난이도

보통10점 중 7점

유형
동적 계획법, 조합론, 문자열, 누적 합
정답자
아직 제출이 없습니다

문제

십진 숫자로 이루어진 문자열 ss가 있다.

문자열 ss를 모든 자릿수가 서로 다른 비어 있지 않은 문자열 tt로 바꾸려고 한다. 이를 위해 서로 겹치지 않는 부분 문자열들을 골라 지울 수 있다. 고른 집합은 비어 있어도 되고, 각 부분 문자열의 길이는 11보다 커야 하며, 각 부분 문자열에서 첫 자릿수와 마지막 자릿수가 같아야 한다. 이러한 집합을 고르는 경우의 수를 구하라.

두 집합이 다르다는 것은 한 집합에는 있고 다른 집합에는 없는 부분 문자열이 존재한다는 뜻이다. 부분 문자열은 시작 위치나 끝 위치가 다르면 서로 다른 것으로 본다.

경우의 수가 매우 클 수 있으므로 109+710^9 + 7로 나눈 나머지를 출력한다.

입력

한 줄에 문자열 ss가 주어진다. (1≤∣s∣≤1051 \le |s| \le 10^5) ss는 십진 숫자로 이루어져 있다.

출력

문제의 답을 정수 하나로 출력한다.

예제2

  1. 예제 1

    입력
    88005553535
    
    예상 출력
    7
    
  2. 예제 2

    입력
    123
    
    예상 출력
    1