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

-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

#include <bits/stdc++.h>
using namespace std;
char a[1000005];
int b[100005];
int cnt, zuo, you, jing, j, ans;
int main() {
  queue<char> q;
  queue<char> s;
  gets(a);
  for (int i = 0; a[i] != '\0'; i++) {
    if (a[i] == ')') you++;
    if (a[i] == '(') {
      zuo++;
      q.push(a[i]);
    } else if (a[i] == ')' && !q.empty()) {
      q.pop();
    } else if (a[i] == '#') {
      j++;
      jing++;
      b[j] = q.size();
      while (!q.empty()) q.pop();
    }
    if (you + jing > zuo) {
      int ans = 0;
      cout << -1;
      ans++;
      break;
    }
  }
  if (ans == 1)
    for (int i = 1; i <= j; i++) {
      cout << b[i] << endl;
    }
  return 0;
}
