Вступ
Останнім часом я звикаю друкувати з Swype .
Я помітив, що певні слова можна скласти, намалювавши пряму лінію від початкового листа до закінчуючого листа, або пропустивши букви, які повторюються.
Наприклад, я можу набрати слово balloon, перебираючи через наступні літери:
b> a> l> o> n.
Виклик
Давайте визначимо найкоротший Шлейп Шлях або SSP, як мінімальну кількість відрізних сегментів рядків, необхідних для введення рядка. Відрізок рядка - це безперервна пряма лінія між будь-якими двома або більше літерами. Будь-яка зміна напрямку починає новий відрізок рядка - хоча деякі слова можуть бути пропущені, намалювавши лише одну пряму лінію.
Використовуйте цей простий макет клавіатури QWERTY :
q w e r t y u i o p
a s d f g h j k l
z x c v b n m
У наведеному вище прикладі, слово balloonматиме SSPз , 4як детально описано в послідовності нижче:
1) Start at `b` (line segments = 0)
2) slide to `a` (line segments = 1)
3) slide to `l` (line segments = 2)
4) slide to `o` (line segments = 3)
5) slide to `n` (line segments = 4)
Рядок qwertyмає SSP= 1 , так як ніяких змін напрямку не потрібно , коли Swyping цього слова.
Вхідні дані
Одне слово-рядок, що містить будь-який a-zчерез STDIN, аргумент функції або командний рядок.
Вихідні дані
Роздрукуйте через STDOUT, поверніть або найближчу альтернативу мовам, число, що nпредставляє рядок SSP.
Один останній рядок необов’язковий у outut. Стандартні лазівки заборонені. Найкоротше подання в байтах виграє.
Примітки
- Зміна напрямку починає новий відрізок лінії.
- Літери, які повторюються, рахуються лише один раз (наприклад:
bookkeeperслід трактувати якbokeper). - Зазвичай Swpye виправляє пропущені букви, переглядаючи сусідні букви та заповнюючи найкращі здогадки. Для цього завдання припустімо, що немає природних мов, передбачуваного тексту чи виправлення помилок.
- Великі
A-Zвходи розглядаються як їхні малі аналоги. - Ігноруйте будь-які цифри
0-9у введенні. - Діагональні доріжки дозволені - тобто, пряма лінія , яка охоплює літери
o,k,n, наприклад, вважається1сегмент. Це правило відноситься до будь-яких діагональна нахилу (наприклад , літериc,h,iв рядку).
Приклади
Input Output
---------------------
a 0
aa 0
aaaaaa 0
aaaaaabc 2
in 1
int 2
java 3
qwerty 1
chicago 5
balloon 4
BALLOON 4
typewriter 5
bookkeeper 6
stackexchange 11
2hello7 3
2HELLO7 3