# Pastebin BTv4Qj5R def find_the_added_letter_junior(s, t): char_count = {} for c in t: if c in char_count: char_count[c] += 1 else: char_count[c] = 1 for c in s: if c in char_count: char_count[c] -= 1 else: return c for c in char_count: if char_count[c] == 1: return c def find_the_added_letter_senior(s, t): counter_s = collections.Counter(s) counter_t = collections.Counter(t) diff = counter_t - counter_s return next(iter(diff)) def find_the_added_letter_ascii(s, t): char_count = 256 * [0] for c in t: char_count[ord(c)] += 1 for c in s: char_count[ord(c)] -= 1 for idx, c in enumerate(char_count): if c == 1: return chr(idx) import collections import random import string import timeit n = 5_000#_000 s = ''.join(random.choices(string.ascii_uppercase + string.digits, k=n)) pos = random.randint (0, n) t = ''.join([s[:pos], "X", s[pos:]]) print("Junior", timeit.timeit("find_the_added_letter_junior(s, t)", globals=globals(), number=1000)) print("Senior", timeit.timeit("find_the_added_letter_senior(s, t)", globals=globals(), number=1000)) print("Ascii", timeit.timeit("find_the_added_letter_ascii(s, t)", globals=globals(), number=1000))