#include<iostream>
#include<string>
using namespace std;
int* func(string s){
int*next=new int[s.length()];
int n=s.length();
int i=0,j=-1;
next[0]=-1;
while(i<n-1){
if(j==-1 || s[i]==s[j]) {
i++;
j++;
next[i]=j;
}
else j=next[j];
}
return next;
}
int str(string a,string b){
int la=a.length(),lb=b.length();
if(la<lb) return -1;
int i=0,j=0;
int*next=func(b);
while(i<la&&j<lb){
if(j==-1||a[i]==b[j]){
i++;
j++;
}
else j=next[j];
}
return j==lb?i-j:-1;
}
int main(){
string a="abcabcd";
string b="abcd";
int l=str(a,b);
if(l!=-1) cout<<a.substr(l,b.length());
return 0;
}