#include <bits/stdc++.h>
using namespace std;

#define fi first
#define se second
#define repl(i,a,b) for(int i=(int)(a);i<(int)(b);i++)
#define repr(i,n) for(int i=(int)(n-1);i>=0;i--)
#define rep(i,n) repl(i,0,n)
#define each(itr,v) for(auto itr:v)
#define pb(s) push_back(s)
#define all(x) (x).begin(),(x).end()
#define dbg(x) cout << #x" = " << x << endl
#define print(x) cout << x << endl
#define maxch(x,y) x=max(x,y)
#define minch(x,y) x=min(x,y)
#define uni(x) x.erase(unique(all(x)),x.end())
#define exist(x,y) (find(all(x),y)!=x.end())
#define bcnt(x) bitset<32>(x).count()

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> P;
typedef pair<P, int> PPI;
typedef pair<int, P> PIP;
typedef pair<ll, ll> PL;
typedef pair<P, ll> PPL;
typedef set<ll> S;

#define INF INT_MAX/3
#define MAX_N 1000000001

vector<int> perm(15);

vector<ll> dfs(string s) {
    vector<vector<ll>> num;
    vector<char> op;

    int i = 0;
    while(i < s.length()) {
        if ('0' <= s[i] && s[i] <= '9') {
            int tmp = 0;
            while(i < s.length() && '0' <= s[i] && s[i] <= '9') {
                tmp = tmp * 10 + (s[i] - '0');
                i++;
            }
            num.pb(vector<ll>(1, tmp));
            i--;
        } else if (s[i] == '(') {
            int j = i + 1, flag = 1;
            while(flag > 0) {
                if (s[j] == '(') flag++;
                if (s[j] == ')') flag--;
                j++;
            }
            j--;
            num.pb(dfs(s.substr(i + 1, j - i - 1)));
            i = j;
        } else {
            op.pb(s[i]);
        }
        i++;
    }

    if (op.size() > 0) {
        S st;
        vector<ll> ans;
        iota(all(perm), 0);
        do {
            vector<vector<ll>> v(num);

            bool ok = true;
            rep(i, op.size()) {
                vector<ll> tmp;
                int l = perm[i];
                while(l >= 0 && v[l].empty()) l--;
                if (l < 0) {
                    ok = false;
                    break;
                }
                rep(j, v[l].size()) {
                    rep(k, v[perm[i] + 1].size()) {
                        switch(op[perm[i]]) {
                            case '+':
                            tmp.pb(v[l][j] + v[perm[i] + 1][k]); break;
                            case '-':
                            tmp.pb(v[l][j] - v[perm[i] + 1][k]); break;
                            case '*':
                            tmp.pb(v[l][j] * v[perm[i] + 1][k]); break;
                            case '/':
                            if (v[perm[i] + 1][k] != 0) tmp.pb(v[l][j] / v[perm[i] + 1][k]); break;
                        }
                    }
                }
                if (tmp.size() == 0) {
                    ok = false;
                    break;
                }
                uni(tmp);
                v[l] = tmp;
                v[perm[i] + 1].clear();
            }
            if (ok) rep(i, v[0].size()) st.insert(v[0][i]);
        } while(next_permutation(perm.begin(), perm.begin() + op.size()));
        each(itr, st) ans.pb(itr);
        return ans;
    } else {
        return num[0];
    }
}

int main(){
    cin.sync_with_stdio(false);
    string s;
    while(cin >> s, s[0] != '#') {
        cout << dfs(s).size() << endl;
    }

    return 0;
}

Measured memory_bytes: 3224