#(#(#((##((()))(((#)(#()#(((()()(()#(##(((()(((()))#(((((()(((((((()#((#((()(#(((()(()##(()(((()((#(
 (#((((()
 (#((
 ((#)((#)((#)((#)((#)((#)((#)((#)((#)((#)((#)((#)((#)((#)((#)((##
 (())((((#)
 (#(
 (#))(#(#)((((#(##((#(#((((#(##((((((#((()(()(())((()#((((#((()((((#(((((#(##)(##()((((()())(((((#(((
 ##((((((()
 #((#
 #))))
 (((((#(#(#(#()
 ((#(()#(##
 (((((((((((((((((((###################
 )((##((###
 (((()#(#)(
 ((#)(
 )(((())#
 ()((#((#(#()
 ((#(
 ()#(#())()()#)(#)()##)#((()#)((#)()#())((#((((((((#)()()(()()(((((#)#(#((((#((##()(##(((#(()(#((#))#

-1
 -1
 -1
 1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
 3
 -1
 -1
 -1
 -1
 -1
 1
1
1
5
 1
1
1
1
 1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
 -1
 -1
 -1
 -1
 1
1
3
 -1
 -1

//package codingskills;

import java.util.ArrayList;
import java.util.Scanner;

public class CodingSkills {

    
    public static void main(String[] args) {

        Scanner sc =  new Scanner(System.in);
        String line = sc.nextLine();
        
        int nSharps=0;
        int open=0,close=0;
        
        ArrayList<Integer> sharps = new ArrayList<Integer>();
        
        for(int i=0;i<line.length();i++){
            char ch = line.charAt(i);
            if(ch=='#'){
                sharps.add(i);
                nSharps++;
            }
            else if(ch=='(')
                open++;
            else
                close++;
        }
        
        int putInLast = open-close-(nSharps-1);
        
//        for(int i=0;i<nSharps-1;i++){
//            line = line.replaceFirst("#", ")");
//        }
//        String putInLastString = ")";
//        for(int t=0;t<putInLast-1;t++)
//            putInLastString+=")";
        
//        line = line.replaceFirst("#", putInLastString);
        
        
        int opened=0; int closed=0;
        int extraClosed=0;
        
        boolean ok=true;
        int currentSharp=0;
        for(int i=0;i<line.length();i++){
            char ch = line.charAt(i);
            if(ch=='(')
                opened++;
            else if(ch==')')
                closed++;
            else{
                if(currentSharp<nSharps-1)
                    extraClosed+=1;
                else extraClosed+=putInLast;
                currentSharp++;
            }
            
            if(closed+extraClosed>opened){
                ok=false;
                break;
            }
        }
    
        
        if(extraClosed==0 || opened!=closed+extraClosed)
            ok=false;
        
        if(!ok)
            System.out.println(-1);
        else{
            for(int i=0;i<nSharps-1;i++)
                System.out.print("1\n");
            System.out.println(putInLast);
        }
            
    

    }
    
}
    
//    public static void main(String[] args) {
//
//        int t,n,p,m,a,b,c;
//        
//        Scanner sc = new Scanner(System.in);
//        
//        t = sc.nextInt();
//
//        while(t-->0){
//            p = sc.nextInt();
//            n = sc.nextInt();
//            m = sc.nextInt();
//            
//            int [] deg = new int[n];
//            int [][] adj = new int[n][n];
//            int [][] wei = new int[n][n];
//            
//            for(int j=0;j<n;j++){
//                adj[j] = new int[n];
//                wei[j] = new int[n];
//                deg[j]=0;
//            }
//            
//            for(int i=0;i<m;i++){
//                a = sc.nextInt(); b = sc.nextInt(); c = sc.nextInt();
//                a--; b--;
//                adj[a][deg[a]]=b; wei[a][deg[a]++]=c;
//                adj[b][deg[b]]=a; wei[b][deg[b]++]=c;
//            }
//            
//            
//            // implement MST algorithm
//            
//            boolean [] intree = new boolean[n];
//            int [] dist = new int[n];
//            for(int i=0;i<n;i++)
//                dist[i]=Integer.MAX_VALUE;
//            
//            dist[0]=0;
//            
//            for(int i=0;i<n-1;i++){
//                // selecting a node
//                int min_ = Integer.MAX_VALUE;
//                int min_idx=-1;
//                
//                for(int j=0;j<n;j++)
//                    if(!intree[j] && dist[j]<min_){
//                        min_ = dist[j];
//                        min_idx = j;
//                    }
//                if(min_idx==-1)
//                    break;
//                
//                int node=min_idx;
//                
//                intree[node]=true;
//                for(int j=0;j<deg[node];j++)
//                {
//                    int other=adj[node][j];
//                    int weight=wei[node][j];
//                    
//                    if(intree[other])
//                        continue;  
//                    
//                    if(weight < dist[other])
//                        dist[other]=weight;
//                }
//                
//            }
//            
//            int sum=0;
//            for(int i=0;i<n;i++)
//                sum += dist[i];
//            
//            sum *= p;
//            
//            System.out.println(sum);
//            
//
//            
//            
//        }
//
//    }
//    
//}
    
//    public static void main(String[] args) {
//        Scanner sc = new Scanner(System.in);
//        String line = sc.nextLine();
//        
//        while(line!="end"){
//            Stack<Character> stack = new Stack<Character>();
//
//            boolean isBalanced=true;
//
//            for (int i=0;i<line.length();i++){
//                char c = line.charAt(i);
//                if(c != ')' && c != '(' && c!=']' && c!='[')
//                    continue;
//                else if(c=='(' || c=='['){
//         
//                    stack.push(c);
//                }   
//                else if(c==')' || c==']'){
//                    if(stack.isEmpty()){
//                        isBalanced=false;
//                        break;
//                    }
//                    else{
//                        char top = stack.pop();
//               
//                        if(c==']' && top=='[')
//                            continue;
//                        else if(c==')' && top=='(')
//                            continue;
//                        else {
//                            isBalanced=false;
//                            break;
//                        }
//                    }
//                }
//            }
//
//            if (stack.isEmpty()==false)
//                isBalanced=false;
//
//            System.out.println(isBalanced?"Yes!":"No!");
//
//
//            line = sc.nextLine();
//        }
//
//    }
//    
