#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>

using namespace std;

typedef std::vector<std::string> String1D;
typedef std::vector<String1D> String2D;

int main() {
    String2D masiv_C0(14, String1D(2));
    masiv_C0[0][0]="A";
    masiv_C0[0][1]="ADF";
    masiv_C0[1][0]="AB";
    masiv_C0[1][1]="F";
    masiv_C0[2][0]="AD";
    masiv_C0[2][1]="ADF";
    masiv_C0[3][0]="AF";
    masiv_C0[3][1]="ADF";
    masiv_C0[4][0]="B";
    masiv_C0[4][1]="BCF";
    masiv_C0[5][0]="BC";
    masiv_C0[5][1]="BC";
    masiv_C0[6][0]="BD";
    masiv_C0[6][1]="F";
    masiv_C0[7][0]="BF";
    masiv_C0[7][1]="BF";
    masiv_C0[8][0]="C";
    masiv_C0[8][1]="BC";
    masiv_C0[9][0]="CF";
    masiv_C0[9][1]="B";
    masiv_C0[10][0]="D";
    masiv_C0[10][1]="ADF";
    masiv_C0[11][0]="DF";
    masiv_C0[11][1]="ADF";
    masiv_C0[12][0]="E";
    masiv_C0[12][1]="E";
    masiv_C0[13][0]="F";
    masiv_C0[13][1]="ABDF";

    // а это "образцы"
    String2D masiv_X0(3, String1D(2));
    masiv_X0[0][0]="A";
    masiv_X0[0][1]="ADF";
    masiv_X0[1][0]="C";
    masiv_X0[1][1]="BC";
    masiv_X0[2][0]="D";
    masiv_X0[2][1]="ADF";

    String2D masiv_Y1 = masiv_C0;
    // цикл по образцам
    for (int i = 0; i < masiv_X0.size(); ++i) {
        // цикл по мишеням
        //// идём с конца, чтобы при удалени не нарушать порядок
        //// в итоге получается -1, поэтому счётчик знаковый
        for (int j = masiv_C0.size() - 1; j >= 0; --j) {
            // нужно ли удалять мишень
            bool todel = true;
            // цикл по символам
            for (int sym = 0; sym < masiv_X0[i].size(); ++sym) {
                // если хоть один символ не совпал
                if (masiv_X0[i][sym] != masiv_C0[j][sym]) {
                    // удалять не надо
                    todel = false;
                    break;
                }
            }
            // если нужно удалить мишень
            if (todel) {
                masiv_Y1.erase(masiv_Y1.begin() + j);
            }
        }
    }

    String2D::iterator iter = masiv_Y1.begin();
    // вывод
    while (iter != masiv_Y1.end()) {
        std::copy((*iter).begin(), (*iter).end(), std::ostream_iterator<std::string>(cout, " "));
        cout << "\n";
        ++iter;
    }

    return 0;
}
