G. Построй строку
ограничение по времени на тест
4 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Определим функцию $$$f(s)$$$, которая принимает строку $$$s$$$, состоящую из строчных латинских букв и точек, и возвращает строку, состоящую из строчных латинских букв следующим образом:

  1. пусть $$$r$$$ пустая строка;
  2. будем обрабатывать символы $$$s$$$ слева направо. Для каждого символа $$$c$$$ выполним следующее: если $$$c$$$ является строчной латинской буквой, то добавим $$$c$$$ в конец строки $$$r$$$; в противном случае удалим последний символ из $$$r$$$ (если $$$r$$$ пустая — функция аварийно завершает работу);
  3. вернуть $$$r$$$ как результат функции.

Вам заданы две строки $$$s$$$ и $$$t$$$. Вы должны удалить минимально возможное количество символов из $$$s$$$, чтобы $$$f(s) = t$$$ (и функция не завершалась аварийно). Обратите внимание, что вам не разрешается вставлять новые символы в $$$s$$$ или менять порядок существующих.

Входные данные

Входные данные состоят из двух строк: первая содержит $$$s$$$ — строку, состоящую из строчных латинских букв и точек, вторая содержит $$$t$$$ — строку, состоящую из строчных латинских букв ($$$1 \le |t| \le |s| \le 10000$$$).

Дополнительное ограничение на входные данные: можно удалить некоторое количество символов из $$$s$$$ так, чтобы $$$f(s) = t$$$.

Выходные данные

Выведите одно целое число — минимально возможное количество символов, которое необходимо удалить из $$$s$$$, чтобы $$$f(s)$$$ не завершалась аварийно и вернула $$$t$$$ в качестве результата выполнения.

Примеры
Входные данные
a.ba.b.
abb
Выходные данные
2
Входные данные
.bbac..a.c.cd
bacd
Выходные данные
3
Входные данные
c..code..c...o.d.de
code
Выходные данные
3