import java.io.*;

class Asaear {
    String op;
    int    val;
    Asaear sabg;
    Asaear sabd;

    Asaear (String o, int v, Asaear g, Asaear d) {
        op = o;
        val = v;
        sabg = g;
        sabd = d;
    }
}

public class Corrige7 {

    public static String Lire () {
        BufferedReader in = 
            new BufferedReader(new InputStreamReader(System.in));
        String s;
        try { s = in.readLine(); }
        catch (IOException e) { s = "echec"; }
        return(s);
    }

    static Asaear construitConst() {
        return(new Asaear("x", -1, 
                          new Asaear("+", -1, 
                                     new Asaear("feuille", 3, null, null), 
                                     new Asaear("feuille", 4, null, null)),
                          new Asaear("feuille", 5, null, null)));
    }     

    static int nombreOperateurs (Asaear b) {
        if (b == null) 
            return(0);
        else
            if (b.op.equals("feuille")) 
                return(0);
            else
                return(1+ nombreOperateurs(b.sabg) + nombreOperateurs(b.sabd));
    }

    static void affiche (Asaear b) {
        affiche2(b);
        System.out.println();
    }

    static void affiche2 (Asaear b) {
        if (b != null) 
            if (b.op.equals("feuille"))
                System.out.print(b.val);
            else {
                System.out.print("(");
                affiche2 (b.sabg);
                System.out.print(b.op);
                affiche2 (b.sabd);
                System.out.print(")");
            }
    }

    static int eval (Asaear b) {
        if (b != null) 
            if (b.op.equals("feuille")) 
                return(b.val);
            else if (b.op.equals("+"))
                return(eval(b.sabg) + eval(b.sabd));
            else 
                return(eval(b.sabg) * eval(b.sabd));
        else {
            System.out.println("bug");
            return(-1);
        }            
    }

    static Asaear construitPre() {
        String tmp = Lire();
        if (tmp.equals(""))
            return(null);
        else if (tmp.equals("+") || tmp.equals("x"))
            return(new Asaear(tmp, -1, construitPre(), construitPre()));
        else 
            return(new Asaear("feuille", Integer.parseInt(tmp), null, null));
    }

    static Asaear construitInf() { // n'accepte pas l'arbre vide
        String tmp = Lire();
        if (tmp.equals("(")) {              
            Asaear gauche = construitInf(); 
            String op = Lire();             
            Asaear droit = construitInf();  
            Lire(); // parenthese fermante 
            return(new Asaear(op, -1, gauche, droit)); 
        }
        else // c'est un entier
            return(new Asaear("feuille", Integer.parseInt(tmp), null, null));
    }

    public static void main (String[] args) {
        Asaear a;

//        a = construitConst(); 
//        a = construitPre(); 
        a = construitInf(); 
        System.out.println(nombreOperateurs(a));
        affiche(a); 
        System.out.println(eval(a));
    }
}
