| import sys |
| from collections import OrderedDict |
| |
| class Trie: |
| def __init__(self, name): |
| self.name = name |
| self.children = OrderedDict() |
| self.count = 1 |
| |
| def add(self, name): |
| if name in self.children: |
| self.children[name].count += 1 |
| else: |
| self.children[name] = Trie(name) |
| return self.children[name] |
| |
| def print(self, depth): |
| if depth > 0: |
| print('|', end="") |
| for i in range(depth): |
| print('-', end="") |
| if depth > 0: |
| print(end=" ") |
| print(self.name, '#', self.count) |
| for key, child in self.children.items(): |
| child.print(depth + 1) |
| |
| |
| Root = Trie("Root") |
| |
| if __name__ == "__main__": |
| for line in sys.stdin: |
| words = line.split('==>') |
| words = [word.strip() for word in words] |
| MyTrie = Root; |
| for word in words: |
| MyTrie = MyTrie.add(word) |
| |
| Root.print(0) |