// Задача "Соревнования по программированию"
// 10-ая Всероссийская командная олимпиада школьников по программированию
// Автор задачи: Владимир Ульянцев, ulyantsev@rain.ifmo.ru
// Автор решения: Сергей Поромов, poromov@rain.ifmo.ru

import java.io.*;
import java.util.*;

public class contests_sp_wrong2 implements Runnable {

	public static void main(String[] args) {
		new Thread(new contests_sp_wrong2()).start();
	}

	public void run() {
		try {
			Locale.setDefault(Locale.US);
			br = new BufferedReader(new FileReader(FILENAME + ".in"));
			out = new PrintWriter(FILENAME + ".out");
			solve();
			out.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	BufferedReader br;
	PrintWriter out;
	StringTokenizer st;
	boolean eof;

	String nextToken() {
		while (st == null || !st.hasMoreTokens()) {
			try {
				st = new StringTokenizer(br.readLine());
			} catch (Exception e) {
				eof = true;
				return "0";
			}
		}
		return st.nextToken();
	}

	int nextInt() {
		return Integer.parseInt(nextToken());
	}

	void myAssert(boolean e, String s) {
		if (!e) {
			throw new Error("Assertion failure " + s);
		}
	}

	private static final String FILENAME = "contests";
	
	class Item {
		HashMap<String, Item> data = new HashMap<String, Item>();
		boolean isFile;
		boolean isTest;
		boolean isCatalogWithTests;
		boolean isCatalogWithProblem;
		boolean isCatalogWithContest;
		boolean isChecker;
		String name;
		
		Item(String s) {
			name = s;
		}
	}

	public void solve() {
		int n = nextInt();
		Item root = new Item("root");
		for (int i = 0; i < n; i++) {
			String s = nextToken();
			String disk = s.substring(0, 1);
			if (!root.data.containsKey(disk)) {
				root.data.put(disk, new Item(disk));
			}
			Item cur = root.data.get(disk);
			StringTokenizer st = new StringTokenizer(s.substring(2).toLowerCase(), "\\");
			while (st.hasMoreTokens()) {
				String t = st.nextToken();
				if (!cur.data.containsKey(t)) {
					cur.data.put(t, new Item(t));
				}
				cur = cur.data.get(t);
			}
			cur.isFile = true;
		}
		int ans = dfs(root);
		out.println(ans);
	}
	
	int dfs(Item cur) {
		int ret = 0;
		for (Item t : cur.data.values()) {
			ret += dfs(t);
		}
		if (cur.isFile) {
			if (cur.name.length() > 1 && cur.name.charAt(0) >= '0' && cur.name.charAt(0) <= '9' && cur.name.charAt(1) >= '0' && cur.name.charAt(1) <= '9') {
				if (cur.name.length() == 2 || cur.name.substring(2).equals(".a")) {
					cur.isTest = true;
				}
			}
			if (cur.name.startsWith("check.")) {
				cur.isChecker = true;
			}
		} else {
			cur.isCatalogWithTests = cur.data.size() > 0 ? true : false;
			int i = 1;
			String t = i < 10 ? "0" + i : "" + i;
			while (i < 100 && cur.data.containsKey(t) && cur.data.containsKey(t + ".a")) {
				i++;
				t = i < 10 ? "0" + i : "" + i;
			}
			if (i == 1) {
				cur.isCatalogWithTests = false;
			}
			for (Item it : cur.data.values()) {
				if (it.isFile) {
					String s = it.name;
					if (s.endsWith(".a")) {
						s = s.substring(0, s.length() - 2);
					}
					if (s.length() != 2 || s.charAt(0) < '0' || s.charAt(0) > '9' || s.charAt(1) < '0' || s.charAt(1) > '9') {
						cur.isCatalogWithTests = false;
						break;
					}
					int num = Integer.parseInt(s);
					if (num < 1 || num >= i) {
						cur.isCatalogWithTests = false;
						break;
					}
				}
			}
			if (cur.data.containsKey("tests") && cur.data.get("tests").isCatalogWithTests) {
				for (Item it : cur.data.values()) {
					if (it.isChecker) {
						cur.isCatalogWithProblem = true;
					}
				}
			}
			cur.isCatalogWithContest = cur.data.size() > 0 ? true : false;
			for (Item it : cur.data.values()) {
				if (!it.isCatalogWithProblem) {
					cur.isCatalogWithContest = false;
					break;
				}
			}
		}
		if (cur.isCatalogWithContest) {
			ret++;
		}
		return ret;
	}
}
