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

-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;
template <class T>
bool Maximize(T &v, T nv) {
  if (nv > v) return v = nv, 1;
  return 0;
}
template <class T>
bool Minimize(T &v, T nv) {
  if (nv < v) return v = nv, 1;
  return 0;
}
template <class T>
T Mod(T &v, T mod) {
  return v = (v % mod + mod) % mod;
}
const long long INFLL = numeric_limits<long long>::max();
const long INF = numeric_limits<long>::max();
void solve() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  string s;
  cin >> s;
  long cnt = cnt = count(s.begin(), s.end(), '#');
  long open1 = 0, open2 = 0;
  for (long i = 0; i < s.length(); ++i) {
    switch (s[i]) {
      case '(':
        open2++;
        break;
      case ')':
        if (open2)
          open2--;
        else if (open1)
          open1--;
        else
          return void(printf("-1\n"));
        break;
      case '#':
        open1 += open2;
        open2 = 0;
        s[i] = ')';
        --i;
        break;
    }
  }
  if (open2) return void(printf("-1\n"));
  for (long i = 1; i < cnt; ++i) printf("1\n");
  printf("%ld\n", open1 + 1);
}
void init() {}
int main() {
  init();
  solve();
  return 0;
}
