import java.util.*;

/* Q1 */
class Pile {
  private final int MAX = 100;
  private char []elements;
  private int sommet;
  public Pile() {
    sommet = 0;
    elements = new char[MAX];
  }
  public boolean estUnePileVide() {
    return sommet==0;
  }
  public char sommet() {
    if (estUnePileVide()) {
      System.err.println("Pile vide!!!!");
      System.exit(1);
    }
    return elements[sommet-1];
  }
  public void empile(char element) {
    if (sommet==MAX) {
      System.err.println("Pile vide!!!!");
      System.exit(1);
    }
    elements[sommet++] = element;
  }
  public char depile() {
    if (estUnePileVide()) {
      System.err.println("Pile vide!!!!");
      System.exit(1);
    }
    return elements[--sommet];
  }
}

public class TD3EX2 {
  public static void main(String []args) {
    Scanner in = new Scanner(System.in);
    /* Q2 & Q3 */
    while (in.hasNext()) {
      boolean fin = false;
      Pile pile = new Pile();
      String s = in.nextLine();
      for (int i=0; !fin && i<s.length(); i++) {
        char c = s.charAt(i);
        switch(c) {
        case '(':
        case '[':
          pile.empile(c);
          break;
        case ')':
        case ']':
          if (pile.estUnePileVide()) {
            System.err.println("Erreur détectée en position "+i);
            fin = true;
          } else {
            char o = pile.sommet();
            if ((o=='(' && c==']') || (o=='[' && c==')')) {
              System.err.println("Erreur détectée en position "+i);
              fin = true;
            } else {
              pile.depile();
            }
          }
          break;
        default: // ok les autres caractères sont ignorés
          break;
        }
      }
      if (pile.estUnePileVide() && !fin)
        System.out.println("C'est ok!");
      else
        System.out.println("Trop de parenthèses.");
    }
  }
}