#agc021d. [agc021_d]Reversed LCS

[agc021_d]Reversed LCS

题目描述

Takahashi 决定给他的母亲一个字符串。

定义一个字符串 TTvalueTTTT'TT' 是将 TT 反转得到的字符串)的最长公共子序列的长度。也就是说,value 是以下两个字符串相等的最长长度:TT 的一个子序列(可以非连续),和 TT' 的一个子序列(可以非连续)。

Takahashi 有一个字符串 SS。他想给他的母亲一个尽可能高的 value 值的字符串,因此他希望在 SS 中至多更改 KK 个字符,以便获得一个尽可能高的 value 值的字符串。找到可达到的最高 value 值。

约束条件

  • 1S3001 \leq |S| \leq 300
  • 0KS0 \leq K \leq |S|
  • SS 由小写英文字母组成。
  • KK 是一个整数。

输入

从标准输入读入输入数据,格式如下:

SS KK

输出

输出可达到的最高 value 值。


示例输入 1

abcabcabc
1

示例输出 1

将第一个字符改为 c 得到 cbcabcabc。令这个字符串为 TTTTTT' 的一个最长公共子序列是 cbabcbc,长度为 77


示例输入 2

atcodergrandcontest
3

示例输出 2

15