#include #include #define rep(i,n) for(int i=0;i equal(1 << 10); vector small(1 << 10); { int num = s[0] - '0'; for(int x = 1; x < num; x++) small[1 << x]++; equal[1 << num]++; } for(int i = 1; i < n; i++){ vector equal_old(1 << 10); vector small_old(1 << 10); swap(equal, equal_old); swap(small, small_old); int num = s[i] - '0'; rep(bit, 1 << 10){ for(int x = 0; x < num; x++) small[bit ^ (1 << x)] += equal_old[bit]; equal[bit ^ (1 << num)] += equal_old[bit]; for(int x = 0; x <= 9; x++) small[bit ^ (1 << x)] += small_old[bit]; } if(i % 2 == 0){ for(int x = 1; x <= 9; x++) small[(1 << x)]++; } } return equal[0] + small[0]; } int main(){ string s; cin >> s; cout << solve(s).val() << "\n"; return 0; }