st1dict = dict((t.split('-')[1], t) for t in st1)
list2titles = list(st1dict[k] for k in list2)
extras = list(t for t in st1 if t not in list2titles)
print(list2titles + extras)
Python: How to order a list based on another list