In this Word order problem, we need to develop a python program that can read an integer and string as an input separated with each line, and then we need to print the number of occurrence of the distinct word in the given string on the output screen.

HackerRank Word Order solution in Python


Problem solution in Python 2 programming.

# Enter your code here. Read input from STDIN. Print output to STDOUT
n = int(raw_input().strip())
counter = {}
words = []
for i in range(n):
  word = raw_input().strip()
  if word in counter:
    counter[word] += 1
  else:
    counter[word] = 1
    words.append(word)
    
print len(words)
print ' '.join([str(counter[word]) for word in words])


Problem solution in Python 3 programming.

# Enter your code here. Read input from STDIN. Print output to STDOUT
from collections import Counter, OrderedDict
class OrderedCounter(Counter, OrderedDict):
    pass
d = OrderedCounter(input() for _ in range(int(input())))
print(len(d))
print(*d.values())


Problem solution in pypy programming.

# Enter your code here. Read input from STDIN. Print output to STDOUT
from collections import OrderedDict
num = raw_input()

word_dict = OrderedDict()
list_words = []
for i in range(0,int(num)):
    list_words.append(raw_input())
for word in list_words:
    if word not in word_dict:
        word_dict[word] = 1
    else:
        word_dict[word] = word_dict[word] + 1    
answer = ""
for i in word_dict:
    answer = answer + str(word_dict[i]) + " "
    
print str(len(word_dict)) + "\n" + answer
    


Problem solution in pypy3 programming.

from collections import OrderedDict
od = OrderedDict()
for _ in range(int(input())):
    x = input()
    od[x]=od.get(x,0)+1
print (len(od))
print (" ".join(str(v) for k,v in od.items()))