import java.util.*; public class Main { public static long MOD = 998244353; public static long[] kaijo; public static long[] div; public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ Scanner sc = new Scanner(System.in); String s = sc.next(); int n = s.length(); int zero = 0; int[] num = new int[10]; for(int i = 0;i < s.length();i++) { int a = s.charAt(i) - '0'; num[a]++; }kaijo = new long[n + 1]; div = new long[n + 1]; kaijo[0] = 1; div[0] = 1; for(int i = 1;i <= n;i++) { kaijo[i] = kaijo[i - 1] * (long)i % MOD; div[i] = pow(kaijo[i],MOD - 2); }long ans = 0; for(int i = 1;i <= 9;i++) { if(num[i] == 0)continue; int rem = n - 1; long add = 1; for(int j = 0;j < 9;j++) { if(i != j) { add = (add * combination(rem,num[j])) % MOD; rem -= num[j]; }else { add = (add * combination(rem,num[j] - 1)) % MOD; rem -= num[j] - 1; }//System.out.print(rem + " "); }ans += add; //System.out.println(" "); }System.out.print(ans % MOD); }public static long combination(int a,int b) { if(a < b)return 0; return kaijo[a] * div[b] % MOD * div[a - b] % MOD; } public static long pow(long a,long b) { long ret = 1; long val = a % MOD; long comp = 1; for(int i = 0;i < 40;i++) { if((b &comp) != 0) { ret = (ret * val) % MOD; }val = (val * val) % MOD; comp *= 2L; }return ret; } }