Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- 3
- biteabbsirontailboltbite
- bite tail bolt
- _____ _ _ _ _
- |_ _| |__ ___ / \ _ __ ___| |__ _ _| |
- | | | '_ \ / _ \ / _ \ | '_ \/ __| '_ \| | | | |
- | | | | | | __// ___ \| | | \__ \ | | | |_| | |
- |_| |_| |_|\___/_/ \_\_| |_|___/_| |_|\__,_|_|
- */
- #include<bits/stdc++.h>
- using namespace std;
- #define N 100005
- int dp[N];
- int n,m;
- string s;
- vector<string>v(N);
- int fun(int i)
- {
- if(i<=-1)
- return 0;
- if(dp[i]!=-1)
- return dp[i];
- int ans=0;
- for(int j=0;j<m;j++)
- {
- if(i-v[j].length()+1<0)
- continue;
- if(s.substr(i-v[j].length()+1,v[j].length())==v[j])
- ans=max(fun(i-v[j].length())+(int)v[j].length(),ans);
- }
- dp[i]=ans;
- return ans;
- }
- void solve()
- {
- cin>>m;
- cin>>s;
- n=s.length();
- for(int i=0;i<=n;i++)
- dp[i]=-1;
- for(int i=0;i<m;i++)
- cin>>v[i];
- cout<<n-fun(n-1);
- return;
- }
- int main()
- {
- int TESTS=1;
- // cin>>TESTS;
- while(TESTS--)
- {
- solve();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment