AT_joig2024_e 名前 (Name)
Description
JOI 君と IOI 君は犬を飼うことにした.最初にすべきことは,犬の名前を決めることである.二人で話し合った結果,犬の名前を以下の $ 4 $ つの条件を満たすものにすることにした.
> **条件 1** 名前は英大文字 (`A`, `B`, ..., `Z`) と英小文字 (`a`, `b`, ..., `z`) からなる文字列である.
>
> **条件 2** JOI 君の好きな文字列は長さ $ N $ の文字列 $ S $ であるから, $ S $ が名前の部分列となるようにする.
>
> **条件 3** IOI 君の好きな文字列は長さ $ M $ の文字列 $ T $ であるから, $ T $ が名前の部分列となるようにする.
>
> **条件 4** 名前を呼びやすいものにするため,同じ文字の間には別の文字が $ K $ 文字以上あるようにする.厳密には,位置が異なる任意の同じ文字 $ 2 $ つについて,必ずその間に別の文字が $ K $ 文字以上入っているようにする.なお, $ K = 0 $ の場合や,名前の文字がすべて異なる場合は,この条件を満たしていると考える.
>
> ただし,これらの条件では英大文字と英小文字は区別される.例えば `A` と `a` は異なる文字とみなされることに注意せよ.
ここで,名前の部分列とは,名前から何文字か ( $ 0 $ 文字でもよい) を取り除いて作れる文字列のことである.例えば,名前が `algorithm` であるとき,`ai` や `lgtm` は名前の部分列であるが,`joi` や `logarithm` は名前の部分列ではない.
二人は名前が短いほど良いと考えているため, $ 4 $ つの条件のもとで最も短い名前を付けることにした.
JOI 君と IOI 君の好きな文字列および整数 $ K $ が与えられたとき,犬に付ける名前の文字数を求めるプログラムを作成せよ.
Input Format
入力は以下の形式で与えられる.
> $ N $ $ M $ $ K $ $ S $ $ T $
Output Format
犬に付ける名前の文字数を $ 1 $ 行で出力せよ.
Explanation/Hint
### 小課題
1. ( $ 2 $ 点) $ S = T $ , $ K = 0 $ .
2. ( $ 7 $ 点) $ S = T $ , $ K = 1 $ .
3. ( $ 16 $ 点) $ S = T $ .
4. ( $ 17 $ 点) $ K = 0 $ .
5. ( $ 13 $ 点) $ K = 1 $ , $ N \leqq 25 $ , $ M \leqq 25 $ .
6. ( $ 15 $ 点) $ K = 1 $ .
7. ( $ 20 $ 点) $ K \leqq 2 $ .
8. ( $ 10 $ 点) 追加の制約はない.
### Sample Explanation 1
JOI 君と IOI 君の好きな文字列はどちらも `hottokeiki` である.ここで,犬の名前を `hottokeiki` にすることを考える.これは以下のように $ 4 $ つの条件を満たす.
- **条件 1:** 名前は英大文字と英小文字からなる.
- **条件 2:** 文字列 $ S $ (`hottokeiki`) は犬の名前 `hottokeiki` の部分列である.
- **条件 3:** 文字列 $ T $ (`hottokeiki`) は犬の名前 `hottokeiki` の部分列である.
- **条件 4:** $ K = 0 $ なので,この条件は満たしている.
また,これが $ 4 $ つの条件を満たす中で最も短い名前である.この文字数 $ 10 $ を出力する.
この入力例は小課題 $ 1, 3, 4, 7, 8 $ の制約を満たす.
### Sample Explanation 2
入力例 $ 1 $ とは $ K $ の値のみが異なる.
もし犬の名前を入力例 $ 1 $ と同じ `hottokeiki` にすれば,**条件 4** を満たさない.なぜなら, $ 2 $ つの `t` の間に文字が $ 1 $ 個もないからである.
$ 4 $ つの条件を満たす最も短い名前として `hotNtokeiki` などが考えられる.この文字数 $ 11 $ を出力する.
この入力例は小課題 $ 2, 3, 5, 6, 7, 8 $ の制約を満たす.
### Sample Explanation 3
入力例 $ 1, 2 $ とは $ K $ の値のみが異なる.
もし犬の名前を入力例 $ 2 $ と同じ `hotNtokeiki` にすれば,**条件 4** を満たさない.なぜなら, $ 2 $ つの `t` の間に $ 1 $ 文字しかなく, $ 2 $ つの `k` の間に $ 2 $ 文字しかなく, $ 2 $ つの `i` の間に $ 1 $ 文字しかないからである.
$ 4 $ つの条件を満たす最も短い名前として `hotarutokeiyuki` などが考えられる.この文字数 $ 15 $ を出力する.
この入力例は小課題 $ 3, 8 $ の制約を満たす.
### Sample Explanation 4
JOI 君の好きな文字列は `Jouhou`,IOI 君の好きな文字列は `Orinpikku` である.ここで,犬の名前を `OJouhorinpikku` にすることを考える.これは以下のように $ 4 $ つの条件を満たす.
- **条件 1:** 名前は英大文字と英小文字からなる.
- **条件 2:** 文字列 $ S $ (`Jouhou`) は犬の名前 `OJouhorinpikku` の部分列である.
- **条件 3:** 文字列 $ T $ (`Orinpikku`) は犬の名前 `OJouhorinpikku` の部分列である.
- **条件 4:** $ K = 0 $ なので,この条件は満たしている.
また,これが $ 4 $ つの条件を満たす中で最も短い名前のひとつである.この文字数 $ 14 $ を出力する.なお,英大文字と英小文字は区別されるため,`jouhorinpikku`(文字数 $ 13 $ )などは条件を満たさない.
この入力例は小課題 $ 4, 7, 8 $ の制約を満たす.
### Sample Explanation 5
$ 4 $ つの条件を満たす最も短い名前として `CoMaMiTeRTeRaCe` などが考えられる.この文字数 $ 15 $ を出力する.
この入力例は小課題 $ 5, 6, 7, 8 $ の制約を満たす.
### Sample Explanation 6
$ 4 $ つの条件を満たす最も短い名前は `JOIGEIGOI` である.この文字数 $ 9 $ を出力する.
この入力例は小課題 $ 7, 8 $ の制約を満たす.
### Constraints
- $ 1 \leqq N \leqq 500 $ .
- $ 1 \leqq M \leqq 500 $ .
- $ 0 \leqq K \leqq 3 $ .
- $ S $ は英大文字と英小文字からなる長さ $ N $ の文字列である.
- $ T $ は英大文字と英小文字からなる長さ $ M $ の文字列である.
- $ N, M, K $ は整数である.