준오는 심술쟁이!!

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

보통7조합론동적 계획법수학아직 제출이 없습니다시간 제한1초메모리 제한256 MB

문제

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

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

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

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

입력

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

출력

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

힌트

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

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