시간 제한메모리 제한제출정답맞힌 사람정답 비율
0.5 초 1024 MB15131386.667%

문제

ある文字列の文字の順序を並べ替えて別の文字列を作ること,また,そのように並べ替えて 作られた文字列をアナグラム (Anagram) と呼ぶ.この問題では,一度も並べ替えをしていな い文字列も元の文字列のアナグラムと呼ぶことにする.つまり,文字列 “EARTH” は文字列 “HEART” のアナグラムであり,文字列 “HEART” も,文字列 “HEART” のアナグラムである.

文字列が与えられると,多くの場合,その文字列のアナグラムは何通りも考えられる.たとえ ば文字列 “IOI” のアナグラムは,自身を含めて辞書順に “IIO”, “IOI”, “OII” の 3 通りがある.

さて,君にはある文字列が与えられる.君の仕事は,与えられた文字列が,その文字列の全 てのアナグラムの中で,辞書順で何番目に現れるか,を調べるプログラムを書くことである.

たとえば,文字列 “EARTH” は “EARTH” のアナグラムの中で 28 番目であり, 文字列 “HEART” は “HEART” のアナグラムの中で 55 番目である.

입력

入力は 1 行だけであり,この 1 行は アルファベットの大文字のみからなる 20 文字以下の文字列である.この文字列に対して問題の 計算を行いなさい.

출력

出力は,標準出力に行うこと.入力で与えられた文字列が,その文字列のアナグラ ムの中で,辞書順で何番目の文字列であるかを整数で 1 行に出力せよ.

예제 입력 1

HEART

예제 출력 1

55

예제 입력 2

IOI

예제 출력 2

2

힌트

注意 オーバーフローに注意すること.

232 < 20 × 19 × · · · × 3 × 2 × 1 < 263

である.