Utility function [1, 2, 3, 4] has unique elements: Yes [1, 2, 1, 4] has unique elements: No [1, 2, 3, 4, None, None] has unique elements: Yes Empty lists In-List 1: [] In-List 2: [] Out-List 1: [] Out-List 2: [] Partitions: ([], [], []) Cost: 0 Empty list In-List 1: [] In-List 2: [1, 2, 3] Out-List 1: [None, None, None] Out-List 2: [1, 2, 3] Partitions: ([], [], [1, 2, 3]) Cost: 3.0 Same list In-List 1: [1, 2, 3] In-List 2: [1, 2, 3] Out-List 1: [1, 2, 3] Out-List 2: [1, 2, 3] Partitions: ([], [1, 2, 3], []) Cost: 0.0 Overlapping In-List 1: [1, 2, 3, 4, 5, 6, 7, 8, 9] In-List 2: [3, 4, 20, 21, 5, 6, 7, 10, 11] Out-List 1: [1, 2, 3, 4, None, None, 5, 6, 7, 8, 9] Out-List 2: [None, None, 3, 4, 20, 21, 5, 6, 7, 10, 11] Partitions: ([1, 2, 8, 9], [3, 4, 5, 6, 7], [20, 21, 10, 11]) Cost: 6.0 Overlapping In-List 1: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] In-List 2: [1, 3, 5, 7, 9] Out-List 1: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] Out-List 2: [None, 1, None, 3, None, 5, None, 7, None, 9] Partitions: ([0, 2, 4, 6, 8], [1, 3, 5, 7, 9], []) Cost: 5.0 Non-overlapping In-List 1: [1, 3, 5, 7, 9] In-List 2: [2, 4, 6, 8, 10] Out-List 1: [1, 3, 5, 7, 9] Out-List 2: [2, 4, 6, 8, 10] Partitions: ([1, 3, 5, 7, 9], [], [2, 4, 6, 8, 10]) Cost: 5.0 Strings In-List 1: ['a', 'c', 'c', 'g', 't', 'a', 'c', 'c', 'g'] In-List 2: ['a', 'g', 't', 'a', 'c', 'c', 'c', 'c', 'g'] Out-List 1: ['a', 'c', 'c', 'g', 't', 'a', 'c', 'c', None, None, 'g'] Out-List 2: ['a', None, None, 'g', 't', 'a', 'c', 'c', 'c', 'c', 'g'] Cost: 4.0 Strings, more complex In-List 1: ['a', 'a', 'c', 'c', 'g', 't', 'a', 'c', 'g', 'g', 't'] In-List 2: ['a', 'g', 't', 'g', 'g'] Out-List 1: ['a', 'a', 'c', 'c', 'g', 't', 'a', 'c', 'g', 'g', 't'] Out-List 2: ['a', None, None, None, 'g', 't', None, None, 'g', 'g', None] Cost: 6.0 Asymmetric behaviour: In-List 1: ['a', 'g', 't', 'g', 'g'] In-List 2: ['a', 'a', 'c', 'c', 'g', 't', 'a', 'c', 'g', 'g', 't'] Out-List 1: ['a', None, None, None, 'g', 't', None, None, 'g', None] Out-List 2: ['a', 'a', 'c', 'c', 'g', 't', 'a', 'c', 'g', 'g'] Cost: 6.0 Call align.py for testing directory compare!