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) |