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

-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 s[100010];
stack<int> st;
int ima[100100];
int main(void) {
  scanf("%s", s);
  vector<int> ans;
  int cnt = 0;
  for (int i = 0; s[i]; ++i) {
    if (s[i] == '(') st.push(i);
    if (s[i] == ')') {
      if (st.empty()) {
        printf("-1\n");
        return 0;
      }
      st.pop();
    }
    if (s[i] == '#') ima[i] = 2;
  }
  while (!st.empty()) {
    ima[st.top()] = 1;
    st.pop();
  }
  for (int i = 0; s[i]; ++i) {
    if (ima[i] == 1) ++cnt;
    if (ima[i] == 2) {
      if (cnt > 0) {
        ans.push_back(cnt);
        cnt = 0;
      } else {
        printf("-1\n");
        return 0;
      }
    }
  }
  for (int x : ans) {
    printf("%d\n", x);
  }
  return 0;
}
