codeforces#P1366G. Construct the String

Construct the String

Description

Let's denote the function $f(s)$ that takes a string $s$ consisting of lowercase Latin letters and dots, and returns a string consisting of lowercase Latin letters as follows:

  1. let $r$ be an empty string;
  2. process the characters of $s$ from left to right. For each character $c$, do the following: if $c$ is a lowercase Latin letter, append $c$ at the end of the string $r$; otherwise, delete the last character from $r$ (if $r$ is empty before deleting the last character — the function crashes);
  3. return $r$ as the result of the function.

You are given two strings $s$ and $t$. You have to delete the minimum possible number of characters from $s$ so that $f(s) = t$ (and the function does not crash). Note that you aren't allowed to insert new characters into $s$ or reorder the existing ones.

The input consists of two lines: the first one contains $s$ — a string consisting of lowercase Latin letters and dots, the second one contains $t$ — a string consisting of lowercase Latin letters ($1 \le |t| \le |s| \le 10000$).

Additional constraint on the input: it is possible to remove some number of characters from $s$ so that $f(s) = t$.

Print one integer — the minimum possible number of characters you have to delete from $s$ so $f(s)$ does not crash and returns $t$ as the result of the function.

Input

The input consists of two lines: the first one contains $s$ — a string consisting of lowercase Latin letters and dots, the second one contains $t$ — a string consisting of lowercase Latin letters ($1 \le |t| \le |s| \le 10000$).

Additional constraint on the input: it is possible to remove some number of characters from $s$ so that $f(s) = t$.

Output

Print one integer — the minimum possible number of characters you have to delete from $s$ so $f(s)$ does not crash and returns $t$ as the result of the function.

Samples

a.ba.b.
abb
2
.bbac..a.c.cd
bacd
3
c..code..c...o.d.de
code
3