/**
 * @file other_code.c
 * @author Eliott
 * @author ESBELIN
 * @version finale
 * @date 20 avril 2025
 * @brief Code d'un codingamer
 */

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int N, letters, digit_used[10], letter_to_digit[10];
char word[6][11], letter[11], *p, line[6][11];

/**
 * @fn int cmp(const void *a, const void *b)
 * @brief trie les lettres alphabétiquement
 * @param a de type const void *
 * @param b de type const void *
 * @return la différence entre les deux caractères (suivant le code ASCII)
 */

int cmp(const void *a, const void *b){ return *(char*)a - *(char*)b; }

/**
 * @fn int is_initial(char c)
 * @brief trie les lettres alphabétiquement
 * @param c un caractère
 * @return 1 si la lettre est en début de mot
 * @return 0 si la lettre n'est pas en début de mot
 */

int is_initial(char c){
    for(int i = 0; i <= N; i++)
        if(word[i][0] == c) return 1;
    return 0;
}

/**
 * @fn void test()
 * @brief vérifie si l'addition est correcte
 * @return retour de fonction sans rien faire si la somme n'est pas correcte
 */

void test(){
    for(int i = 0; i <= N; i++)
        for(int j = 0; word[i][j]; j++)
            for(int k = 0;; k++)
                if(word[i][j] == letter[k]){
                    line[i][j] = letter_to_digit[k] + '0';
                    break;
                }
    int sum = 0;
    for(int i = 0; i <= N; i++)
        sum += atoi(line[i]) * (i == N ? -1 : 1);
    if(sum) return;
    for(int i = 0; i < letters; i++)
        printf("%c %i\n", letter[i], letter_to_digit[i]);
    exit(0);
}

/**
 * @fn void assign(int i)
 * @brief teste chaque combinaison avant de trouver la bonne
 * @param i un entier naturel
 */

void assign(int i){
    letter_to_digit[i] = is_initial(letter[i]);
    for(; letter_to_digit[i] <= 9; letter_to_digit[i]++)
        if(digit_used[letter_to_digit[i]] == 0){
            if(i == letters - 1) test();
            else
                digit_used[letter_to_digit[i]] = 1,
                assign(i + 1),
                digit_used[letter_to_digit[i]] = 0;
        }
}

int main(){
    scanf("%d", &N);
    for(int i = 0; i <= N; i++)
        for(scanf("%s", p = word[i]); *p; p++)
            if(strchr(letter, *p) == 0) letter[letters++] = *p;
    qsort(letter, letters, sizeof(char), cmp);
    assign(0);    
}
