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

-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;
bool Read(int& x) {
  char c, r = 0, n = 0;
  x = 0;
  for (;;) {
    c = getchar();
    if ((c < 0) && (!r)) return (0);
    if ((c == '-') && (!r))
      n = 1;
    else if ((c >= '0') && (c <= '9'))
      x = x * 10 + c - '0', r = 1;
    else if (r)
      break;
  }
  if (n) x = -x;
  return (1);
}
long long gcd(int a, int b) {
  int c;
  while (a != 0) {
    c = a;
    a = b % a;
    b = c;
  }
  return b;
}
int checksqr(long long a) {
  if ((long long)sqrt(a) * (long long)sqrt(a) == a) return 1;
  return 0;
}
int gcdext(int a, int b, int& x, int& y) {
  if (a == 0) {
    x = 0;
    y = 1;
    return b;
  }
  int x1, y1;
  int d = gcdext(b % a, a, x1, y1);
  x = y1 - (b / a) * x1;
  y = x1;
  return d;
}
long long rec(int n) {
  if (n == 1) return 1;
  if (n == 2) return 2;
  return rec(n - 1) + rec(n - 2);
}
int n, m, v;
vector<int> get_prime(int N) {
  bool* isPrime = new bool[N];
  fill(isPrime, isPrime + N, true);
  isPrime[1] = false;
  isPrime[0] = false;
  for (int i = 2; i * i < N; i++)
    if (isPrime[i])
      for (int j = i * i; j < N; j += i) isPrime[j] = false;
  vector<int> arr;
  for (int i = 0; i < N; i++)
    if (isPrime[i]) arr.push_back(i);
  return arr;
}
long long gcd1(int a, int b, int a1, int b1) {
  int c;
  while (b >= a) {
    if ((a == b1 && b == a1) || (a == a1 && b == b1)) return 1;
    swap(a, b);
    a = a - b;
  }
  return 0;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  string s;
  cin >> s;
  int size = s.size();
  int l = 0, r = 0, k = 0;
  if (s[size - 1] == '(') {
    cout << -1;
    return 0;
  }
  for (int i = 0; i < size; i++) {
    if (s[i] == '(') l++;
    if (s[i] == ')') r++;
    if (s[i] == '#') k++;
  }
  if (l < r) {
    cout << -1;
    return 0;
  }
  int l1 = 0, r1 = 0, k1 = 0;
  for (int i = 0; i < size; i++) {
    if (s[i] == '(') l1++;
    if (s[i] == ')') r1++;
    if (s[i] == '#') {
      k1++;
      r1++;
    }
    if (l1 < r1) {
      cout << -1;
      return 0;
    }
  }
  if (l1 < r1 && s[size - 1] != '#') {
    cout << -1;
    return 0;
  }
  for (int i = 0; i < k - 1; i++) {
    cout << 1 << endl;
  }
  cout << l - r - k + 1;
}
