#include <iostream>
#include<string>
#include<vector>
#include<map>
using namespace std;
bool findutil(string &temp,map<string,int> &hash,const vector<string> &B,int start,int end)
{
int i=0,j=0;
int len=B.size();
int len1=B[0].size();
while(i<len)
{
hash[B[i]]=0;
i++;
}
i=start;
while(i<=(end-len1+1))
{
if(hash.find(temp.substr(i,len1))==hash.end())
return false;
else
{
if(hash[temp.substr(i,len1)]==1)
return false;
else
hash[temp.substr(i,len1)]=1;
i+=len1;
}
}
return true;
}
int main() {
// your code goes here
const char* args[] = {"foo", "bar"};
std::vector<std::string> B(args, args + 2);
string A="barfoothefoobarman ";
// vector<string> B=[ "aaa", "aaa", "aaa", "aaa", "aaa" ];
int i=0,j=0,len=0,count=0,total=0,len1=0;
vector<int>res;
map<string,int> hash;
len1=A.size();
len=B.size();
count=B[0].length();
total=count*len;
i=0;
while(i<len)
{
hash[B[i]]=0;
i++;
}
i=0;
while(i<=(len1-total+1))
{
j=i+total-1;
if(findutil(A,hash,B,i,j))
{
res.push_back(i);
}
i++;
}
i=0;
while(i<res.size())
{
cout<<res[i]<<endl;
i++;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxzdHJpbmc+CiNpbmNsdWRlPHZlY3Rvcj4KI2luY2x1ZGU8bWFwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKYm9vbCBmaW5kdXRpbChzdHJpbmcgJnRlbXAsbWFwPHN0cmluZyxpbnQ+ICZoYXNoLGNvbnN0IHZlY3RvcjxzdHJpbmc+ICZCLGludCBzdGFydCxpbnQgZW5kKQp7CiAgICBpbnQgaT0wLGo9MDsKICAgIGludCBsZW49Qi5zaXplKCk7CiAgICBpbnQgbGVuMT1CWzBdLnNpemUoKTsKICAKICAgIHdoaWxlKGk8bGVuKQogICAgewogICAgICAgaGFzaFtCW2ldXT0wOwogICAgICAgIGkrKzsKICAgIH0KICAgIGk9c3RhcnQ7CiAgICB3aGlsZShpPD0oZW5kLWxlbjErMSkpCiAgICB7CiAgICAgICAgaWYoaGFzaC5maW5kKHRlbXAuc3Vic3RyKGksbGVuMSkpPT1oYXNoLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAgICBpZihoYXNoW3RlbXAuc3Vic3RyKGksbGVuMSldPT0xKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgIGhhc2hbdGVtcC5zdWJzdHIoaSxsZW4xKV09MTsKICAgICAgICAgICAgIGkrPWxlbjE7CiAgICAgICAgIH0KICAgIH0KICAgIHJldHVybiB0cnVlOwogICAgCn0KaW50IG1haW4oKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCgljb25zdCBjaGFyKiBhcmdzW10gPSB7ImZvbyIsICJiYXIifTsKIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBCKGFyZ3MsIGFyZ3MgKyAyKTsKCXN0cmluZyBBPSJiYXJmb290aGVmb29iYXJtYW4gIjsKLy8JIHZlY3RvcjxzdHJpbmc+IEI9WyAiYWFhIiwgImFhYSIsICJhYWEiLCAiYWFhIiwgImFhYSIgXTsKCQogCglpbnQgaT0wLGo9MCxsZW49MCxjb3VudD0wLHRvdGFsPTAsbGVuMT0wOwogICAgdmVjdG9yPGludD5yZXM7CiAgICBtYXA8c3RyaW5nLGludD4gaGFzaDsKICAgIGxlbjE9QS5zaXplKCk7CiAgICBsZW49Qi5zaXplKCk7CiAgICBjb3VudD1CWzBdLmxlbmd0aCgpOwogICAgdG90YWw9Y291bnQqbGVuOwogICAgCiAgICBpPTA7CiAgICB3aGlsZShpPGxlbikKICAgIHsKICAgICAgaGFzaFtCW2ldXT0wOwogICAgICBpKys7CiAgICB9CiAgICBpPTA7CiAgICB3aGlsZShpPD0obGVuMS10b3RhbCsxKSkKICAgIHsKICAgICAgICAKICAgICAgICBqPWkrdG90YWwtMTsKICAgICAgICAKICAgICAgICBpZihmaW5kdXRpbChBLGhhc2gsQixpLGopKQogICAgICAgIHsKICAgICAgICAgICAgcmVzLnB1c2hfYmFjayhpKTsKICAgICAgICB9CiAgICAgICAgaSsrOwogICAgICAgIAogICAgfQogICAgaT0wOwogICAgd2hpbGUoaTxyZXMuc2l6ZSgpKQogICAgewogICAgCWNvdXQ8PHJlc1tpXTw8ZW5kbDsKICAgIAlpKys7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==