const int N = 1e5 + 1;

int vn = 1, Next[N][26]; // тут нули лежат
bool isEnd[N];

void init() {
	memset(Next, -1, sizeof(Next));
	// 0xFFFFFFFF = 0xFF 0xFF 0xFF 0xFF = -1 -1 -1 -1
}

void add( const string &s ) {
	int v = 0;
	for (char x : s) {
		int &r = Next[v][x - 'a'];
		if (r == -1)
			r = vn++;
		v = r;
	}
	isEnd[v] = true;
}
void check( const string &text ) {
	for (int i = 0; i < (int)text.size(); i++) {
		int v = 0;
		for (int j = i; j < (int)text.size(); j++) {
			v = Next[v][text[j] - 'a'];
			if (v == -1)
				break;
			if (isEnd[v])
				; // нашёл вхождение
		}
	}		
}