#include <stdio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
#define MAX 100
char stack[MAX][MAX];
int top=-1;
void push(char*str){
    if(top<MAX-1)
    strcpy(stack[++top],str);
}
char*pop(){
    if(top==-1) return NULL;
    return stack[top--];
}
int isOperator(char c){
    return(c=='+'||c=='-'||c=='*'||c=='/'||c=='^');
}
int isvalid(char*exp){
    int i,open=0,close=0;
    for(i=0;exp[i];i++){
        char c=exp[i];
        if(c=='(')open++;
        else if(c==')')close++;
        else if(!(isalnum(c)||isOperator(c)||isspace(c)||c=='('||c==')'))
        return 0;
    }
    return(open==close);
}
void prefixToPostfix(char*prefix){
    if(!isValid(prefix)){
        printf("Invalid input");
        return;
    }
    int length=strlen(prefix);
    for(int i=length-1;i>=0;i--){
        char c=prefix[i];
        if(isspace(c)) continue;
        if(isalnum(c)){
            char op[2]={c,'\0'};
            push(op);
        }
        else if(isOperator(c)){
            char*op1=pop();
            char*op2=pop();
            if(!op1||!op2){
                printf("Invalid input");
                return;
            }
            char temp[MAX];
            sprintf(temp,"%s%s%c",op1,op2,c);
            push(temp);
        }
        else if(c=='('||c==')'){
            continue;
        }
        else{
            printf("Invalid input");
            return;
        }
    }
    if(top!=0){
        printf("Invalid input");
        return;
    }
    printf("%s",stack[top]);
}
int main(){
    char prefix[MAX];
    fgets(prefix,MAX,stdin);
    prefix[strcspn(prefix,"\n")]='\0';
    prefixToPostfix(prefix)
    return 0;
}