- optional<int> na = extract_numbers (a);
- optional<int> nb = extract_numbers (b);
- if (!na || !nb) {
- return a.string() < b.string();
+ string an = extract_numbers (a);
+ string bn = extract_numbers (b);
+
+ int const anl = an.length ();
+ int const bnl = bn.length ();
+
+ if (anl > bnl) {
+ bn = string(anl - bnl, '0') + bn;
+ } else if (bnl > anl) {
+ an = string(bnl - anl, '0') + an;