#include #include using namespace std; using namespace atcoder; typedef long long ll; const int INF = 1<<30; vector manacher(string s){ int i = 0, j = 0; vectorret(s.size()); while(i < s.size()){ while(i-j>=0&&i+j=0&&k+ret[i-k]> N >> M; string S, T; cin >> S; cin >> T; if(M%2==1){cout << -1 << endl;return 0;} for(int i=0;idp(M,INF); for(int i=0;i=M||S[i]!=T[i])break; dp[i] = 1; } for(int i=0;i=M||S[N-1-i]!=T[i])break; dp[i] = 1; } string tt = ""; for(int i=0;imc = manacher(tt); vectorR(M); for(int i=0;i>ev(M,vector()); multisetvs; for(int i=0;i 0){ vs.insert(x); } else{ vs.erase(vs.find(-x)); } } if(vs.size()>0)dp[i] = min(dp[i],*vs.begin()); if(R[i]>0){ if(i+1