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

-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;
int main() {
  string s;
  cin >> s;
  int no = 0, nc = 0, nh = 0, notn = 0, nctn = 0, i, j, k;
  int flag = 0;
  vector<int> vec;
  for (i = 0; i < s.size(); ++i) {
    if (s[i] == '(')
      no++;
    else if (s[i] == '#')
      nh++;
    else
      nc++;
  }
  if ((nc + nh) < no) {
    k = no - (nc + nh);
    for (i = 0; i < s.size(); ++i) {
      if (s[i] == '(')
        notn++;
      else if (s[i] == ')')
        nctn++;
      else {
        nctn++;
        if (nctn > notn) {
          flag = 1;
          break;
        } else {
          int p = 0, q = 0, l = i + 1, r;
          j = notn - nctn;
          while (l < s.size() && s[l] != '#') {
            if (s[l] == '(')
              q++;
            else
              p++;
            r = notn + q - nctn - p;
            j = (j > r) ? r : j;
            l++;
          }
          if (l < s.size()) {
            p++;
            r = notn + q - nctn - p;
            j = (j > r) ? r : j;
          }
          int min = (j < k) ? j : k;
          if (min < 0) min = 0;
          nctn += min;
          k -= min;
          vec.push_back((1 + min));
        }
      }
      if (nctn > notn) {
        flag = 1;
        break;
      }
    }
  } else if ((nc + nh) == no) {
    for (i = 0; i < s.size(); ++i) {
      if (s[i] == '(')
        notn++;
      else if (s[i] == ')')
        nctn++;
      else {
        nctn++;
        vec.push_back(1);
      }
      if (nctn > notn) {
        flag = 1;
        break;
      }
    }
  } else
    flag = 1;
  if (flag == 1)
    cout << (-1) << endl;
  else
    for (i = 0; i < vec.size(); ++i) cout << vec[i] << endl;
  return 0;
}
