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

-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;
const int mod = (int)1e9 + 7;
const int N_ = (int)2e5 + 2;
string a;
int n;
stack<char> S;
vector<int> res;
int main() {
  cin >> a;
  for (long long i = 0; i < a.size(); ++i) n += (a[i] == '#');
  for (long long i = 0; i < a.size(); ++i) {
    if (a[i] == '#') {
      if (S.size() == 0)
        return cout << -1, 0;
      else if (n == 1) {
        int Xx = 0;
        while (!S.empty()) {
          S.pop();
          Xx++;
        }
        res.push_back(Xx);
        n--;
      } else {
        n--;
        res.push_back(1);
        S.pop();
      }
    } else {
      if (a[i] == '(')
        S.push(a[i]);
      else
        S.pop();
    }
  }
  if (S.size() > 0) return cout << -1, 0;
  for (long long i = 0; i < res.size(); ++i) cout << res[i] << endl;
}
