import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        scanner.nextLine(); // 消耗换行符

        // 用于统计每个(前缀, 州)组合的城市数量
        Map<String, Integer> countMap = new HashMap<>();

        for (int i = 0; i < N; i++) {
            String[] parts = scanner.nextLine().split(" ");
            String city = parts[0];
            String state = parts[1];

            // 获取城市名称的前两位字母作为前缀
            String prefix = city.substring(0, 2);

            // 构建键:前缀+州代码
            String key = prefix + state;
            countMap.put(key, countMap.getOrDefault(key, 0) + 1);
        }

        long result = 0;

        // 遍历所有(前缀, 州)组合
        for (Map.Entry<String, Integer> entry : countMap.entrySet()) {
            String key = entry.getKey();
            int count = entry.getValue();

            // 解析出前缀和州
            String prefix = key.substring(0, 2);
            String state = key.substring(2);

            // 特殊对需要满足前缀不等于州,且存在反向组合
            if (!prefix.equals(state)) {
                String reverseKey = state + prefix;
                if (countMap.containsKey(reverseKey)) {
                    // 两个组合的数量相乘,得到它们之间的特殊对数量
                    result += (long) count * countMap.get(reverseKey);
                }
            }
        }

        // 每个特殊对被计算了两次,所以除以2
        System.out.println(result / 2);

        scanner.close();
    }
}