#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<ll> vl;
#define rep(i,n) for(ll i=0; i<(n); i++)
template<class T> inline void chmax(T &a, T b){if(a<b)a=b;}
template<class T> inline void chmin(T &a, T b){if(a>b)a=b;}
const ll inf=1LL<<60;
int main(){
    ll i,j=1,N,x;
    string s;
    cin>>s;
    N=s.size();
    vl ans(N+1,0),lin(N+1,0),v;
    stack<ll> st,er;
    rep(i,N){
        if(s[i]=='('){
            v.push_back(0);
            st.push(j);
            ans[j]=ans[j-1];
            lin[j]=0;
        }else if(s[i]==')'){
            v.push_back(1);
            x=-1;
            while(x<0&&!st.empty()){
                x=st.top();st.pop();
            }
            if(x<0&&st.empty()){
                cout<<(ans[j]=ans[j-1])<<endl;
                lin[j++]=0;
                er.push(-1);
                continue;
            }
            er.push(x);
            ans[j]=ans[j-1]+1;
            if(x>1&&v[x-2]==1){
                lin[j]=lin[x-1]+1;
            }else{
                lin[j]=1;
            }
            ans[j]+=lin[j]-1;
        }else{
            // cout << "dbg:" << v.back() << endl;
            if(v[j-2]){
                if(!er.empty()){st.push(er.top());er.pop();}
            }else{
                st.pop();
            }
            v.pop_back();
            ans[j]=ans[j-1]=lin[j]=lin[j-1]=0;
            j-=2;
        }
        cout<<ans[j]<<endl;
        j++;
    }
}
