Another tactic is to allow ourselves to trim off gaps appearing on the ends
of a global alignment for free; this is relevant if one of our strings to be aligned
happens to contain additional symbols on the ends that are not relevant for the particular
alignment at hand.
Return: The maximum semiglobal alignment score of s and t, followed by an alignment of s
and t achieving this maximum score. Use an alignment score in which matching symbols
count +1, substitutions count -1, and there is a linear gap penalty of 1.
If multiple optimal alignments exist, then you may return any one.