Given a list of non-empty strings and an integer m representing the maximum number of adjacent-swap operations allowed, perform at most m adjacent swaps (each swap exchanges two neighboring strings) to reorder the list so that the concatenation of the resulting list is lexicographically smallest possible. Return the final concatenated string after applying an optimal sequence of at most m adjacent swaps. Notes: - You may choose to use fewer than m swaps. - Swapping non-adjacent items requires multiple adjacent swaps (each counted toward m). - Strings contain only lowercase letters. Example Input: (['bc', 'a', 'bb', 'ab'], 2) Output: 'abbcabb' Explanation: With 2 adjacent swaps we can move 'a' one position left (swap indices 0 and 1 -> ['a','bc','bb','ab']), then move 'ab' one position left (swap indices 2 and 3 -> ['a','bc','ab','bb']). Concatenation yields 'abbcabb', which is lexicographically smallest achievable with ≤2 swaps.
(['bc', 'a', 'bb', 'ab'], 2)'abbcabb'