def compare_report_print(sorted_list, scores, best_name):
    """
    Return compare report.

    :param sorted_list: sorted list of cm's
    :type sorted_list: list
    :param scores: scores of cm's
    :type scores: dict
    :param best_name: best cm name
    :type best_name: str
    :return: printable result as str
    """
    title_items = ['Rank', 'Name', 'Class-Score', 'Overall-Score']
    class_scores_len = map(lambda x: len(str(x['class'])), list(scores.
        values()))
    shifts = ['%-' + str(len(sorted_list) + 4) + 's', '%-' + str(max(map(lambda
        x: len(str(x)), sorted_list)) + 4) + 's', '%-' + str(max(
        class_scores_len) + 11) + 's']
    result = ''
    result += 'Best : ' + str(best_name) + '\n\n'
    result += ''.join(shifts) % tuple(title_items[:-1]) + title_items[-1
        ] + '\n'
    prev_rank = 0
    for index, cm in enumerate(sorted_list):
        rank = index
        if scores[sorted_list[rank]] == scores[sorted_list[prev_rank]]:
            rank = prev_rank
        result += ''.join(shifts) % (str(rank + 1), str(cm), str(scores[cm]
            ['class'])) + str(scores[cm]['overall']) + '\n'
        prev_rank = rank
    return result
