Анализ перестановок с учётом инверсий и разрывов

Python Сложный lists

Задача «Анализ перестановок с учётом инверсий и разрывов»

Дана перестановка чисел от 1 до n. Требуется определить, является ли она «почти тождественной»: количество инверсий (пар i<j, где a[i] > a[j]) должно быть равно максимально возможному для перестановок с фиксированным числом разрывов. Разрывом называется позиция k, где a[k] != k. Если перестановка удовлетворяет условию, выведите количество разрывов, иначе выведите -1. Дополнительно, если количество разрывов равно 0, выведите 0. Если перестановка невозможна (например, данные некорректны), выведите -2.

Формат ввода

В первой строке целое число n (1 ≤ n ≤ 10^5). Во второй строке n целых чисел — перестановка.

Формат вывода

Одно целое число: количество разрывов, -1 или -2.

Примеры

Пример 1

ВВОД
abacaba abacaba
ВЫВОД
7

Пример 2

ВВОД
3 3 2 1
ВЫВОД
-1
main.py