Сортировка строки по длине, алфавиту и регистру

Задача из codewars: создайте функцию longer, которая принимает строку и сортирует содержащиеся в ней слова по их длине в порядке возрастания. Если есть два слова одинаковой длины, отсортируйте их по алфавиту. Для получения более подробной информации посмотрите примеры ниже.

longer("Another Green World") => Green World Another
longer("Darkness on the edge of Town") => of on the Town edge Darkness
longer("Have you ever Seen the Rain") => the you Have Rain Seen ever

Предположим, что в качестве входных данных будут введены только алфавиты. Символы верхнего регистра имеют приоритет над символами нижнего регистра. То есть:

longer("hello Hello") => Hello hello

Мое решение (причем в единственном экземпляре на сайте):

def longer(st):  
    return ' '.join(sorted([item for item in sorted(st.split())], key=len))