+adabacaba
-adabacaba
+aca
aca:caba
-aca
+bacaba
-bacaba
+aba
-aba
+bad
 +cab
+abac
-abac
+baca
 +8UjgAJ
8UjgAJ:02hR7UBc1tqqfL
-8UjgAJ
+zdi
-zdi
 +acabadab
+caba0aba
 +Dmitry
+Mike
Dmitry:All letters will be used
Dmitry:qwertyuiopasdfghjklzxcvbnm QWERTYUIOPASDFGHJKLZXCVBNM
Dmitry:And digits too
Dmitry:1234567890 0987654321
-Dmitry
 +Dmitry
+Mike
+Kate
Dmitry:
 +badabac
badabac:abacabad
-badabac
+0ab
-0ab
+dabacab
-dabacab
+a0ab
-a0ab
+0abaca
-0abaca
+dabac
-dabac
+abaca
-abaca
+bacabada
-bacabada
+aca
-aca
+abadabaca
-abadabaca
+acaba
-acaba
+abacabadab
-abacabadab
 +qlHEc2AuYy
qlHEc2AuYy:YYRwD0 edNZgpE nGfOguRWnMYpTpGUVM aXDKGXo1Gv1tHL9
qlHEc2AuYy:yvh3GsPcImqrvoUcBNQcP6ezwpU0 xAVltaKZp94VKiNao
qlHEc2AuYy:zuCO6Opey L  eu7lTwysaSk00zjpv zrDfbt8l  hpHfu
+pErDMxgVgh
qlHEc2AuYy:I1FLis  mmQbZtd8Ui7y 1vcax6yZBMhVRdD6Ahlq7MNCw
qlHEc2AuYy:lz MFUNJZhlqBYckHUDlNhLiEkmecRh1o0t7alXBvCRVEFVx
pErDMxgVgh:jCyMbu1dkuEj5TzbBOjyUhpfC50cL8R900Je3R KxRgAI dT
qlHEc2AuYy:62b47eabo2hf vSUD7KioN ZHki6WB6gh3u GKv5rgwyfF
pErDMxgVgh:zD5 9 ympl4wR gy7a7eAGAn5xVdGP9FbL6hRCZAR6O4pT6zb
 +6JPKkgXDrA
+j6JHjv70An
+QGtsceK0zJ
6JPKkgXDrA:o4
+CSmwi9zDra
QGtsceK0zJ:Zl
QGtsceK0zJ:0
j6JHjv70An:7
j6JHjv70An:B
QGtsceK0zJ:OO
 +Dmitry
Dmitry:No phrases with spaces at the beginning and at the end
+Mike
Dmitry:spaces    spaces
-Dmitry
 +1aLNq9S7uLV
-1aLNq9S7uLV
+O9ykq3xDJv
-O9ykq3xDJv
+54Yq1xJq14F
+0zJ5Vo0RDZ
-54Yq1xJq14F
-0zJ5Vo0RDZ
+lxlH7sdolyL
-lxlH7sdolyL
 +adabacaba0
 +dabaca
-dabaca
+aba0ab
 +XqD
+aT537
XqD:x6ZPjMR1DDKG2
XqD:lLCriywPnB
-XqD
 +cabadabac
-cabadabac
+abacaba1ab
-abacaba1ab
+ba0abaca
 +acabadab
-acabadab
+aba0abacab
+baca
+abacaba0ab
-baca
-abacaba0ab
-aba0abacab
+cab
-cab
+abacabada
-abacabada
+badabaca
-badabaca
+badaba

4
 0
 14
 0
 224
 0
 8
 615
 34
 86
 0
 0
 0
 46
 0
 0

import java.util.Scanner;

public class lista0 {

	public static void main(String[] args) {
		Scanner leia = new Scanner (System.in);
		String mensagem = "";
		String mensagemnova = "";
		int contador = 0;
		int resposta = 0;
		int respostafinal = 0; 
		Lista bancodenomes = new Lista ();
		while(leia.hasNext()){
			mensagem = leia.nextLine();
			if(mensagem.charAt(0)=='+'){
				for(int i =1; i<(mensagem.length());i++){
					mensagemnova = mensagemnova + mensagem.charAt(i);
				}
				bancodenomes.inserir(new Nome(mensagemnova));
				contador++;
				mensagemnova="";
			} else if (mensagem.charAt(0)=='-'){
					for(int i =1; i<(mensagem.length());i++){
						mensagemnova = mensagemnova + mensagem.charAt(i);
					}
				bancodenomes.remover(mensagemnova);
				contador--;
				mensagemnova="";
			} else {
				int x = 0;
				for(int j = 0;j<(mensagem.length());j++){
					if(mensagem.charAt(j)==':'){
						x = j+1;
						break;
					}
				}
				
				
				for(int i = x; x<(mensagem.length());x++){
					mensagemnova = mensagemnova + mensagem.charAt(x);
				}
				
				resposta = (mensagemnova.length())*contador;
				mensagemnova = "";
				
				
			}
			
			respostafinal = resposta + respostafinal;
			resposta=0;
			
		}
		
		System.out.println(respostafinal);

	}

}

class Lista {
	private Nome nome;
	private Lista proximo;
	//CONSTRUTOR
	public Lista () {
		this.nome = null;
		this.proximo = null;
	}
	//METODO
	public void inserir(Nome nome) {
		if (this.nome == null) {
			this.nome = nome;
			this.proximo = new Lista();
		} else {
			this.proximo.inserir(nome);
		}
	}
	//METODO
	public void remover(String nome) {
    	if (this.nome != null) {
    		boolean x = this.nome.pegar().equals(nome);
    		if (x == true) {
    			this.nome = this.proximo.nome;
    			this.proximo = this.proximo.proximo;
    		} else {
    			this.proximo.remover(nome);
    		}
    	} else {
    		System.out.printf("ERROR");
    	}
    }
	
}


class Nome {
	private String nome;
	//CONSTRUTOR
	public Nome (String nome) {
		this.nome = nome;
	}
	//METODO
	public String pegar(){
		return this.nome;
	}
}
// 1519953078328
