13055. Обʼєднуй та володарюй
Нещодавно співробітники Яндекса запатентували алгоритм оптимальної фрагментації великого набору впорядкованих даних передачі його у мережі. Тепер перед ними стоїть завдання пошуку вже фрагментованого шаблону фрагментованих даних. Звучить досить складно, але вони готові кинути цій задачі виклик, тим більше з вашою допомогою. Не вдаватимемося в їхню мотивацію і відразу перейдемо до постановки завдання.
Є вихідна послідовність \(a\), що складається з \(n\) чисел від 1 до 5, що описує розміри послідовних елементів у фрагментації вихідних даних. Також є послідовність \(b\), що складається з \(m\) чисел від 1 до 5, аналогічно описує розміри послідовних елементів фрагментації зразка.
За одну дію дозволяється вибрати будь-які два сусідні елементи в одній з двох послідовностей і об'єднати їх, замінивши одним елементом зі значенням, що дорівнює їх сумі. Так, з послідовності 1, 2, 2 за одну дію можна отримати тільки послідовності 3, 2 і 1, 4. Після виконання даної операції в послідовності цілком може з'явитися елемент, який більше ніж 5.
Потрібно обчислити мінімальну кількість дій, які потрібно зробити з даними послідовностями, щоб послідовність \(b\) стала підрядком послідовності \(a\).
Примітка
У першому прикладі можна за один крок перетворити послідовність \(a\) на 5, 2, 1, 2, 2, а послідовність \(b\) --- на 2, 1, 2. Сумарна кількість дій дорівнюватиме 2.
Формат вхідних даних
У першому рядку введення містяться два цілих числа \(n\) і \(m\) --- кількість фрагментів у розбиття вихідних даних і кількість фрагментів у розбиття шаблону для пошуку, відповідно (\(1 \le n, m \le 200 000\)). Наступний рядок містить \(n\) чисел \(a_i\), кожне від 1 до 5 включно, що задають розміри фрагментів у розбиття вихідних даних.
Останній рядок містить \(m\) чисел \(b_i\), що описують розміри фрагментів у розбиття шаблону в аналогічному форматі.
Формат вихідних даних
Виведіть одне ціле число --- мінімальна кількість дій, необхідна, щоб друга послідовність стала підрядком першої. Якщо цього неможливо, то виведіть -1.
Приклад вхідних даних
6 4
5 1 1 1 2 2
2 1 1 1
Приклад вихідних даних
2
Приклад вхідних даних
8 4
1 2 1 2 1 2 1 2
1 3 1 2
Приклад вихідних даних
3
Приклад вхідних даних
3 2
3 3 3
4 4
Приклад вихідних даних
-1
Коментарі