#include using namespace std; typedef long long ll; int main(){ string S; cin >> S; int N = S.size(); int M = 0; int inv = 0; for(int i = 0; i < N; i++){ if (S[i] == '1') M++; for(int j = 0; j < i; j++){ if(S[i] < S[j]) inv++; } } vector>dp(M + 1, vector(inv + 1, 0)); dp[0][0] = 1; for(int i = 0; i < N; i++){ vector>ndp(M + 1, vector(inv + 1, 0)); for(int j = 0; j <= M; j++){ for(int k = 0; k <= inv; k++){ // 0 if(k + j <= inv) ndp[j][k + j] += dp[j][k]; // 1 if(j + 1 <= M) ndp[j + 1][k] += dp[j][k]; } } swap(dp,ndp); } cout << dp[M][inv] << endl; return 0; }