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

-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;
stack<int> Stack;
string s;
int sf(0), i;
int sol[100013];
int main() {
  getline(cin, s);
  for (i = 0; i < s.size(); ++i) {
    if (s[i] == '(')
      Stack.push(1);
    else if (s[i] == ')') {
      if (Stack.size())
        Stack.pop();
      else {
        cout << "-1";
        return 0;
      }
    } else if (s[i] == '#') {
      if (i + 1 < s.size()) {
        if (s[i + 1] == '(') {
          sol[++sf] = Stack.size();
          while (Stack.size()) Stack.pop();
        } else if (s[i + 1] == ')') {
          int j = 1 + i, nr = 0;
          while (s[j] == ')') ++nr, ++j;
          sol[++sf] = Stack.size() - nr;
          while (Stack.size()) Stack.pop();
          i = j - 1;
        }
      } else {
        sol[++sf] = Stack.size();
        while (Stack.size()) Stack.pop();
      }
    }
  }
  if (sf == 0 || (Stack.size() > 0))
    cout << "-1";
  else {
    for (i = 1; i <= sf; ++i)
      if (sol[i] <= 0) {
        cout << "-1\n";
        return 0;
      }
    for (i = 1; i <= sf; ++i) cout << sol[i] << "\n";
  }
  return 0;
}
