대문자 문장 만들기

문자열에서 글자를 지운 뒤 남은 문자를 같은 글자 세 개씩 묶어 만들 수 있는 서로 다른 대문자 문장의 수를 구한다.

보통6동적 계획법문자열아직 제출이 없습니다시간 제한1초메모리 제한256 MB

문제

소문자로만 이루어진 문자열이 하나 주어진다. 다음 두 단계를 거쳐 대문자로만 이루어진 문장을 만든다.

  1. 문자열에서 원하는 문자를 제거한다. 제거하는 문자의 개수에는 제한이 없고, 제거할 문자가 서로 인접하지 않아도 되며, 하나도 제거하지 않을 수도 있다.
  2. 남은 문자열을 앞에서부터 세 개씩 끊어 읽는다. 각 묶음은 같은 문자 세 개여야 하고, 묶음마다 같은 알파벳의 대문자 한 개로 바꾼다.

두 번째 단계가 가능하려면 남은 문자열이 같은 문자 세 개짜리 묶음이 이어 붙은 형태여야 한다. 완성된 문장에는 대문자가 한 개 이상 들어간다.

예를 들어 bbcccaabbba에서는 다음 다섯 개의 문장을 만든다.

  1. aaa만 남기면 A가 된다.
  2. bbb만 남기면 B가 된다.
  3. ccc만 남기면 C가 된다.
  4. cccaaa만 남기면 CA가 된다.
  5. cccbbb만 남기면 CB가 된다.

제거하는 방법이 서로 달라도 결과 문장이 같으면 하나로 센다. 만들 수 있는 서로 다른 문장의 개수를 구하시오.

입력

첫째 줄에 소문자로만 이루어진 문자열이 주어진다. 길이는 1 이상 1,000 이하이다.

출력

만들 수 있는 서로 다른 문장의 개수를 1,000,000,007로 나눈 나머지를 첫째 줄에 출력한다.