atcoder#AGC021D. [AGC021D] Reversed LCS

[AGC021D] Reversed LCS

配点 : 900900

問題文

高橋君はお母さんに文字列をプレゼントすることにしました。

文字列 TT の価値とは、TT を逆から読んだものを TT' として、TTTT' の最長共通部分列の長さです。 すなわち、(連続するとは限らない)部分列として TTTT' の両方に現れるものの最大長です。

高橋君は、文字列 SS を持っています。お母さんにできるだけ価値の高い文字列をプレゼントしたい高橋君は、 SS の文字を KK 箇所まで任意に変更して、できるだけ価値の高い文字列を作りたいです。

達成できる価値の最大値を求めてください。

制約

  • 1S3001 \leq |S| \leq 300
  • 0KS0 \leq K \leq |S|
  • SS は英小文字からなる
  • KK は整数である

入力

入力は以下の形式で標準入力から与えられる。

SS

KK

出力

達成できる価値の最大値を出力せよ。

abcabcabc
1
7

11 文字目を c に変更すると、文字列は cbcabcabc になります。 できた文字列を TT とおけば、長さ 77 の文字列 cbabcbcTTTT' の最長共通部分列の一例となります。

atcodergrandcontest
3
15