import re


def FuzzyFilter(collection, searchInput):
    """
    Fuzzy Filters a defined collection

    :collection: The collection to filter
    :searchInput: The input string to fuzzy match
    :returns: A list of suggestions

    """
    suggestions = []
    pattern = '.*?'.join(searchInput)   # Converts 'djm' to 'd.*?j.*?m'
    regex = re.compile(pattern, re.IGNORECASE)  # Compiles a regex.
    for item in collection:
        # Current item matches the regex?
        match = regex.search(item, re.IGNORECASE)
        if match:
            suggestions.append((len(match.group()), match.start(), item))
    return sorted([x for _, _, x in suggestions])