Razbibriga
Ο Mirko έχει ήδη λύσει όλα τα σταυρόλεξα που είναι διαθέσιμα στις ημερήσιες εφημερίδες και φοβάται πολύ την ACTA για να κατεβάσει νέα από το Διαδίκτυο. Τώρα ζήτησε από τον Frane να τον προκαλέσει με ένα πρόβλημα προγραμματισμού. Ο Frane απάντησε με ανυπομονησία με μια ολοκαίνουργια εργασία και είχε την καλοσύνη να μην κλειδώσει την εργασία υπό την προστασία πνευματικών δικαιωμάτων, επομένως επιτρέπεται να το επιχειρήσετε κι εσείς!
Τέσσερις λέξεις με ίσα μήκη μπορούν να ενωθούν σε ένα τετράγωνο έτσι ώστε δύο λέξεις να επισημαίνουν οριζόντιες άκρες, ενώ οι άλλες δύο να σημειώνουν κάθετες άκρες. Οι οριζόντιες λέξεις διαβάζονται από αριστερά προς τα δεξιά και οι κάθετες από πάνω προς τα κάτω. Τα γωνιακά γράμματα μοιράζονται τα δύο γειτονικά άκρα. Το παρακάτω σχήμα δείχνει ένα πιθανό τετράγωνο που δημιουργήθηκε από τις λέξεις "HLAD", "NIVA", "HSIN", "DEDA".
H | L | A | D |
S | E | ||
I | D | ||
N | I | V | A |
Το καθήκον σας είναι, δίνοντάς σας μια λίστα λέξεων ίσου μήκους, να υπολογίσετε τον αριθμό των διαφορετικών τετραγώνων που μπορούν να συγκεντρωθούν από ένα υποσύνολο αυτών των λέξεων. Δεν επιτρέπεται να επαναλάβετε μια λέξη στο ίδιο τετράγωνο. Δύο τετράγωνα είναι διαφορετικά αν διαφέρουν σε τουλάχιστον έναν χαρακτήρα.
Είσοδος
Η πρώτη γραμμή εισόδου περιέχει τον θετικό ακέραιο αριθμό , τον αριθμό των λέξεων στη λίστα.
Κάθε μία από τις επόμενες γραμμές περιέχει μια λέξη που αποτελείται μόνο από κεφαλαία αγγλικά γράμματα.
Κάθε λέξη θα περιέχει το πολύ 10 χαρακτήρες. Όλες οι λέξεις θα είναι διακριτές και θα έχουν ίσο μήκος.
Έξοδος
Η πρώτη και μοναδική γραμμή εξόδου πρέπει να περιέχει τον απαιτούμενο αριθμό διακριτών τετραγώνων.
Σημείωση: Τα δεδομένα δοκιμής θα διασφαλίσουν ότι η λύση ταιριάζει σε έναν ακέραιο τύπο δεδομένων 64 bit (int64 σε Pascal, long long σε C/C++).
Παραδείγματα
input
4
NIVA
HLAD
HSIN
DEDA
output
2
input
6
BAKA
BARA
BALC
CALC
ARHC
BLIC
output
8
Comments