#include <bits/stdc++.h>
using namespace std;
#define SZ(x) (int)(x.size())
#define REP(i, n) for(int i=0;i<(n);++i)
#define FOR(i, a, b) for(int i=(a);i<(b);++i)
#define RREP(i, n) for(int i=(int)(n)-1;i>=0;--i)
#define RFOR(i, a, b) for(int i=(int)(b)-1;i>=(a);--i)
#define ALL(a) a.begin(),a.end()
#define DUMP(x) cerr<<#x<<" = "<<(x)<<endl
#define DEBUG(x) cerr<<#x<<" = "<<(x)<<" (L"<<__LINE__<<")"<< endl;
using ll = long long;
using vi = vector<int>;
using vvi = vector<vi>;
using vll = vector<ll>;
using vvll = vector<vll>;
using P = pair<int, int>;
const double eps = 1e-8;
const ll MOD = 1000000007;
const int INF = INT_MAX / 2;
const ll LINF = LLONG_MAX / 2;
template <typename T1, typename T2>
bool chmax(T1 &a, const T2 &b) {
    if (a < b) { a = b; return true; }
    return false;
}
template <typename T1, typename T2>
bool chmin(T1 &a, const T2 &b) {
    if (a > b) { a = b; return true; }
    return false;
}
template<typename T>
ostream &operator<<(ostream &os, const vector<T> &v) {
    os << "[";
    REP(i, SZ(v)) {
        if (i) os << ", ";
        os << v[i];
    }
    return os << "]";
}
template<typename T1, typename T2>
ostream &operator<<(ostream &os, const map<T1, T2> &mp) {
    os << "{";
    int a = 0;
    for (auto &tp : mp) {
        if (a) os << ", "; a = 1;
        os << tp;
    }
    return os << "}";
}
template<typename T1, typename T2>
ostream &operator<<(ostream &os, const pair<T1, T2> &p) {
    os << p.first << ":" << p.second;
    return os;
}

using State = string::const_iterator;
class ParseError{};

ll expression(State &begin);

ll factor(State &begin) {
    if ('0' <= *begin and *begin <= '9') {
        int ret = *begin - '0';
        ++begin;
        return ret;
    } else if (*begin == '(') {
        ++begin;
        ll ret = expression(begin);
        if (*begin != ')') throw ParseError();
        ++begin;
        return ret;
    }
    throw ParseError();
}

ll ans, M;

ll evalterm(vll& factors, vector<char>& operations, int& i) {
    ll ret = min(factors[i], M+1);
    while (i < SZ(operations) and operations[i] == '*') {
        ++i;
        ret = min(ret * factors[i], M+1);
    }
    return ret;
}

ll evalexp(vll& factors, vector<char>& operations, int& i) {
    ll ret = evalterm(factors, operations, i);
    while (i < SZ(operations) and operations[i] == '+') {
        ++i;
        ret = min(ret + evalterm(factors, operations, i), M+1);
    }
    return ret;
}


ll expression(State &begin) {
    vll factors;
    vector<char> operations;
    factors.push_back(factor(begin));
    while (*begin == '+' or *begin == '*') {
        operations.push_back(*begin);
        ++begin;
        factors.push_back(factor(begin));
    }

    deque<pair<ll,int>> deq;
    int r = 0; ll sum = 0;
    REP(l, SZ(factors)) {
        while (r < SZ(factors) and sum <= M) {
            if (deq.empty() or operations[r-1] == '+') {
                sum += factors[r];
                deq.emplace_back(factors[r], 1);
                ++r;
                continue;
            }
            ll val, cnt; tie(val, cnt) = deq.back(); deq.pop_back();
            sum -= val;
            sum += val * factors[r];
            deq.emplace_back(val * factors[r], cnt + 1);
            ++r;
        }
        if (sum <= M) {
            ans += r - l;
        } else {
            ans += r - l - 1;
        }
        // erase
        if (deq.front().second == 1 or operations[l] == '+') {
            sum -= deq.front().first;
            deq.pop_front();
        } else {
            ll val, cnt; tie(val, cnt) = deq.front(); deq.pop_front();
            sum -= val;
            sum += val / factors[l];
            deq.emplace_front(val / factors[l], cnt - 1);
        }
    }

    int i = 0;
    return evalexp(factors, operations, i);
}

int main() {
    cin.tie(0);
    ios::sync_with_stdio(false);
    cout << fixed << setprecision(10);

    for (;;) {
        cin >> M;
        if (M == 0) break;
        string s; cin >> s;

        State begin = s.begin();
        ans = 0;
        expression(begin);

        ll buff = ans;
        begin = s.begin();
        ans = 0, --M;
        expression(begin);

        cout << buff - ans << endl;
    }

    return 0;
}



Measured memory_bytes: 30284