Shortest works for both ordinary expression patterns and string patterns.
If several Shortest objects occur in the same expression, those that appear first are given higher priority to match shortest sequences.
Shortest[p, pri] is given priority pri to be the shortest sequence. Matches for shortest sequences are tried first for Shortest objects with higher priorities.
Priorities can be any expression, and are ordered in standard MathematicaSort order. Shortest[p] specifies the highest possible priority.
Shortest objects with equal priorities are tried in the order they appear in the expression.
If no explicit Shortest or Longest is given, ordinary expression patterns are normally effectively assumed to be Shortest[p], while string patterns are assumed to be Longest[p].
For ordinary expressions, Shortest[p] specifies that not just p itself, but also all parts of p should match the shortest sequences.