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

-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;
  while (cin >> s) {
    long l, flag = 0, k = 0, j, cnt = 0, flag1 = 0, cnt1 = 0, i;
    long ar[100005], visit[100005];
    memset(visit, 0, sizeof(visit));
    vector<long> v;
    l = s.size();
    for (__typeof(l) i = 0; i < (l); i++) {
      flag = 0;
      if (s[i] == '(' || s[i] == '#')
        ar[k++] = i;
      else {
        for (j = i - 1; j >= 0; j--) {
          if (s[j] == '(' && visit[j] == 0) {
            flag = 1;
            visit[j] = 1;
            break;
          }
        }
        if (flag == 0) {
          flag1 = 1;
          break;
        }
      }
    }
    if (flag1)
      cout << -1 << endl;
    else {
      for (__typeof(k) i = 0; i < (k); i++) {
        if (visit[ar[i]] == 0) {
          if (s[ar[i]] == '(')
            cnt++;
          else {
            cnt1++;
            if (cnt1 > cnt) flag1 = 1;
          }
        }
      }
      if (cnt1 > cnt || flag1 == 1)
        cout << -1 << endl;
      else {
        for (i = 1; i < cnt1; i++) cout << 1 << endl;
        cout << cnt - cnt1 + 1 << endl;
      }
    }
  }
  return 0;
}
