1*a4323586Sziqingluo-90import sys 2*a4323586Sziqingluo-90from collections import OrderedDict 3*a4323586Sziqingluo-90 4*a4323586Sziqingluo-90class Trie: 5*a4323586Sziqingluo-90 def __init__(self, name): 6*a4323586Sziqingluo-90 self.name = name 7*a4323586Sziqingluo-90 self.children = OrderedDict() 8*a4323586Sziqingluo-90 self.count = 1 9*a4323586Sziqingluo-90 10*a4323586Sziqingluo-90 def add(self, name): 11*a4323586Sziqingluo-90 if name in self.children: 12*a4323586Sziqingluo-90 self.children[name].count += 1 13*a4323586Sziqingluo-90 else: 14*a4323586Sziqingluo-90 self.children[name] = Trie(name) 15*a4323586Sziqingluo-90 return self.children[name] 16*a4323586Sziqingluo-90 17*a4323586Sziqingluo-90 def print(self, depth): 18*a4323586Sziqingluo-90 if depth > 0: 19*a4323586Sziqingluo-90 print('|', end="") 20*a4323586Sziqingluo-90 for i in range(depth): 21*a4323586Sziqingluo-90 print('-', end="") 22*a4323586Sziqingluo-90 if depth > 0: 23*a4323586Sziqingluo-90 print(end=" ") 24*a4323586Sziqingluo-90 print(self.name, '#', self.count) 25*a4323586Sziqingluo-90 for key, child in self.children.items(): 26*a4323586Sziqingluo-90 child.print(depth + 1) 27*a4323586Sziqingluo-90 28*a4323586Sziqingluo-90 29*a4323586Sziqingluo-90Root = Trie("Root") 30*a4323586Sziqingluo-90 31*a4323586Sziqingluo-90if __name__ == "__main__": 32*a4323586Sziqingluo-90 for line in sys.stdin: 33*a4323586Sziqingluo-90 words = line.split('==>') 34*a4323586Sziqingluo-90 words = [word.strip() for word in words] 35*a4323586Sziqingluo-90 MyTrie = Root; 36*a4323586Sziqingluo-90 for word in words: 37*a4323586Sziqingluo-90 MyTrie = MyTrie.add(word) 38*a4323586Sziqingluo-90 39*a4323586Sziqingluo-90 Root.print(0) 40