#include<bits/stdc++.h>
using namespace::std;
using lint =long long;
#define rep(i,n) for(lint i=0;i<n;i++)
#define INF (1LL<<60)
using vec=vector<lint>;
string s;
pair<int,int> expr(int& i);
pair<int,int> expr2(int& i);
pair<int,int> term(int& i);
pair<int,int> expr(int& i){
    pair<int,int>res=make_pair(-1,-1);
    while(i<(int)s.size()){
        auto e=expr2(i);
        if(res==make_pair(-1,-1))res=e;
        else res=make_pair(min(res.first,res.second+e.first),res.second+e.second);
        if(s[i]==')')break;
        i++;
    }
    return res;
}
pair<int,int> expr2(int& i){
    pair<int,int>res=make_pair(-1,-1);
    while(i<(int)s.size()){
        auto e=term(i);
        if(res==make_pair(-1,-1))res=e;
        else res=make_pair(res.first+e.first,min(res.second,res.first+e.second));
        if(s[i]=='|')break;
        if(s[i]==')')break;
        i++;
    }
    return res;
}
pair<int,int> term(int& i){
    if(s[i]=='?'){
        i++;
        return make_pair(1,1);
    }else{
        i++;
        auto e=expr(i);
        i++;
        return e;
    }
}
int main(){
    cin>>s;
    int i=0;
    auto e=expr(i);
    cout<<e.second<<" "<<e.first<<endl;
}
