"""
Given a phrase, count the occurrences of each word in that phrase - https://exercism.io/tracks/python/exercises/word-count

For the purposes of this exercise you can expect that a word will always be one of:
    - A number composed of one or more ASCII digits (ie "0" or "1234") OR
    - A simple word composed of one or more ASCII letters (ie "a" or "they") OR
    - A contraction of two simple words joined by a single apostrophe (ie "it's" or "they're")
When counting words you can assume the following rules:
    - The count is case insensitive (ie "You", "you", and "YOU" are 3 uses of the same word)
    - The count is unordered; the tests will ignore how words and counts are ordered
    - Other than the apostrophe in a contraction all forms of punctuation are ignored
    - The words can be separated by any form of whitespace (ie "\t", "\n", " ")
For example, for the phrase "That's the password: 'PASSWORD 123'!, cried the Special Agent.\nSo I fled." the count would be:
    that's: 1
    the: 2
    password: 2
    123: 1
    cried: 1
    special: 1
    agent: 1
    so: 1
    i: 1
    fled: 1
"""

import re
 
string = "That's the password: 'PASSWORD 123'!, cried the Special Agent.\nSo I fled."

# remove punctuation, lowercase & split
string = re.sub(r'[^\w\s]', '', string).lower().split()
print(string)

freq = {}
for st in string:
    if st not in freq.keys():
        freq[st] = 1
    else:
        freq[st] += 1
print(freq)