만드는 중입니다

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

준오는 심술쟁이!!

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

요약
각 위치를 한 번만 1에서 25만큼 밀어 총합이 s가 되도록 만들 수 있는 서로 다른 문자열의 수를 구한다.
난이도

보통10점 중 7점

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

문제

문제 업로드 실수로 대회가 지연되었다. 하지만 사실 업로드 실수가 아니라 심술쟁이 해커 임준오(동탄 주민)의 소행이었다! 욱제가 재미있는 사진을 보여 주지 않자 심술이 난 준오가 욱제의 대회를 엉망으로 만들려고 한 것이다.

준오는 채점 서버가 문제를 찾지 못하도록 문제 이름을 암호화했다. 문제 이름은 알파벳 소문자로만 이루어져 있다. 암호화 과정은 다음과 같다.

  1. 준오는 문제 이름에서 아무 문자나 하나 골라 kk(1≤k≤251 \le k \le 25)만큼 바꾼다. 예를 들어 a를 3만큼 바꾸면 d가 되고, z를 1만큼 바꾸면 a가 된다.
  2. 문자를 바꿀 때마다 kk를 새로 고른다.
  3. 바꾼 kk의 합이 ss가 될 때까지 문자를 계속 바꾼다. 단, 한 번 바꾼 문자는 다시 바꾸지 않는다.

욱제는 앞으로 원래 문제 이름을 몰라도 암호화된 문제를 빠르게 복구할 수 있도록 레인보우 테이블을 만들어 두려고 한다. 문제의 원래 이름이 주어질 때 암호화된 이름이 될 수 있는 서로 다른 이름의 개수를 구해서 욱제에게 알려 주자!

입력

첫째 줄에 ss(1≤s≤3 0001 \le s \le 3\,000)가 주어진다. 둘째 줄에 알파벳 소문자로 이루어진 문제 이름이 주어지며, 이름의 길이 LL은 1≤L≤3 0001 \le L \le 3\,000이다. 문제 이름에 공백은 없다. 25L<s25L < s처럼 암호화가 불가능한 입력은 주어지지 않는다.

출력

암호화된 문제 이름의 경우의 수를 1 000 000 0071\,000\,000\,007로 나눈 나머지를 출력한다.

힌트

첫 번째 예제에서 ab를 총 2만큼 바꾸는 경우는 ad, bc, cb로 모두 3가지이다.

두 번째 예제에서 hanjo를 총 2만큼 바꾸는 경우는 janjo, hcnjo, hapjo, hanlo, hanjq, ibnjo, iaojo, ianko, …, haojp, hankp로 모두 15가지이다.

예제2

  1. 예제 1

    입력
    2
    ab
    
    예상 출력
    3
    
  2. 예제 2

    입력
    2
    hanjo
    
    예상 출력
    15