### The function "lowerUTF8" handles some sequences of cyrillic characters incorrectly

How to reproduce:
ClickHouse server version >=22.9

execute: 
```SELECT lowerUTF8('АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ')```

this will works fine and return correct result:
> абвгдеёжзийклмнопрстуфхцчшщъыьэюя

but executing this:
```SELECT lowerUTF8('КВ АМ И СЖ')```

will result:
> кв ам и сЖ

https://fiddle.clickhouse.com/34a76c87-4dfa-4fc8-808f-376b4b7a183b

last symbol "Ж" will not convert to lower case "ж"

another example:
```SELECT lowerUTF8('ЗАДАЧИ КПЗ')```

this will result:
> задачи кПз

https://fiddle.clickhouse.com/e3c6650a-52ea-4819-ae72-fad8c838d62c

penultimate symbol "П" will not convert to lower case "п"



const ColumnString::Chars & data,
        const ColumnString::Offsets & offsets,
        ColumnString::Chars & res_data,
        ColumnString::Offsets & res_offsets)
    {
        if (data.empty())
            return;
        res_data.resize(data.size());
        res_offsets.assign(offsets);
        array(data.data(), data.data() + data.size(), offsets, res_data.data());
    }
    static void vectorFixed(const ColumnString::Chars &, size_t, ColumnString::Chars &)
    {
        throw Exception("Functions lowerUTF8 and upperUTF8 cannot work with FixedString argument", ErrorCodes::BAD_ARGUMENTS);
    }
    /** Converts a single code point starting at `src` to desired case, storing result starting at `dst`.
     *    `src` and `dst` are incremented by corresponding sequence lengths. */
    static void toCase(const UInt8 *& src, const UInt8 * src_end, UInt8 *& dst)