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

-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

import java.util.Scanner;
import java.util.Stack;


public class C_495 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String s = scanner.next();
		boolean ok = false;
		Stack<Character> doors = new Stack<>();
		boolean hash = false;
		for(char c : s.toCharArray()) {
			if(c =='#')
				hash = true;
				
			else if( hash && c=='(') {
				hash=false;
				int count =0;
				while (!doors.isEmpty()) {					
					char ci = doors.pop();
					
					switch (ci) {
					case ')' : count--;
					break;
					case '#' : 
						break;
					case '(' :
						count++;
					}
				}
				if(count > 0) {
					System.out.println(count);
					ok=true;
				}
				
			}
			doors.push(c);
		}
		int count =0;
		while (!doors.isEmpty()) {					
			char ci = doors.pop();
			
			switch (ci) {
			case ')' : count--;
			break;
			case '#' : 
				break;
			case '(' :
				count++;
			}
		}
		if(count >0 ) {
			System.out.println(count);
			ok =true;
		}
		else if(!ok)
			System.out.println(-1);
	
		
		scanner.close();
	}

}
