#include #include #include #include #include using namespace std; string get_line(fstream &f) { char temp[1024]; string t; f.getline(temp,1024); t = temp; return t; } int main() { fstream file("biomed.in"); string input = get_line(file); stringstream p1(input); int sets; p1 >> sets; for(int a = 0; a < sets; a++) { input = get_line(file); stringstream p2(input); int n; p2 >> n; string main_string = get_line(file); string minions[100]; for(int i = 0; i < n; i++) minions[i] = get_line(file); int min_value[1001]; for(int i = 0; i < 1001; i++) min_value[i] = -1; for(int i = 0; i < n; i++) { if (minions[i] == main_string.substr(0,minions[i].length())) min_value[minions[i].length()] = 1; } for(int i = 2; i <= main_string.length() + 1; i++) { for(int j = 1; j <= i; j++) { for(int k = 0; k < n; k++) { if (main_string.substr(0,j).append(minions[k]) == main_string.substr(0,i) && min_value[j] > 0) { //cout << main_string.substr(0,j).append(minions[k]); //cout << "\n"; if ((min_value[j] + 1) < min_value[i] || min_value[i] == -1) min_value[i] = min_value[j] + 1; } } } } cout << "Data Set " << a + 1 << ":\n"; if (min_value[main_string.length()] > 0) cout << min_value[main_string.length()] << "\n"; else cout << "Impossible\n"; } }