1 #include<string.h>
2 #include<stdio.h>
3 char a[5010],b[5010];
4 short int dp[2][5010];
5 int LCS(int n,int m)
6 {
7 memset(dp, 0, sizeof(dp));
8 int i,j;
9 for(i=1;i<=n;i++)
10 for(j=1;j<=m;j++)
11 {
12 if(a[i-1]==b[j-1])
13 {
14 dp[i%2][j]=dp[(i-1)%2][j-1]+1;
15 //printf("%d %d %d\n",i%2,j,dp[i%2][j]);
16 }
17 else if(dp[(i-1)%2][j]>=dp[i%2][j-1])
18 {
19 dp[i%2][j]=dp[(i-1)%2][j];
20 //printf("%d %d %d\n",i%2,j,dp[i%2][j]);
21 }
22 else
23 {
24 dp[i%2][j]=dp[i%2][j-1];
25 }
26 }
27 return dp[n%2][m];
28 }
29 int main()
30 {
31 int i,j,n;
32 while(scanf("%d",&n)!=EOF)
33 {
34 getchar();
35 gets(a);
36
37 for(i=n-1,j=0;i>=0;i--,j++)
38 {
39 b[j]=a[i];
40 }
41 //printf("%s\n%s\n",a,b);
42 printf("%d\n",n-LCS(n,n));
43 }
44 return 0;
45 }