Contract Names ============== We wish to *contract* two given names, both composed of letters (at least one) but they do not necessarily have the same length. We define the string *s* to be the *contraction* of strings *s1*, *s2* if and only if: #. s1 is a *prefix* of s #. s2 is a *sufix* of s #. it is the *sortest* (among those the fulfill the two previous conditions) For instance, ``'rosandra'`` is a contraction of ``'rosa'`` and ``'sandra'``. But ``'mymamamy'`` is not the contraction of ``'myma'``, ``'mamy'`` (yet it satisfies conditions #1 and #2) since ``'mymamy'`` also does but it is shorter. You are required to deliver the following function in the module :mod:`contract` (file :file:`contract.py`): .. py:function:: contract(n1, n2) such that **given** *n1*, *n2*, non-empty :class:`str` of lowercase letters. **returns** a :class:`str` with the contraction of *n1* and *n2* as as described above. For example: .. literalinclude:: contract.test :language: python3 :start-after: --ini :end-before: --fi Doctests are available in the :download:`contract.test` file.