1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream>

using namespace std;

int main()
{
    int n;
    string a,b;
    const int d = n;
    int * tab = new int [26];
    int * tab1 = new int [26];
    for(int i=0; i<26; ++i){
        tab[i] = 0;
        tab1[i] = 0;
    }

    cin >> n;
    cin >> a >> b;

    for(int i=0; i<n; ++i){
        tab[int(a[i]-97)]++;
    }
    for(int i=0; i<n; ++i){
        tab1[int(b[i]-97)]++;
    }

    bool is_good = true;
    for(int i=0; i<26; ++i){
        if(tab[i]!=tab1[i]){
            is_good = false;
        }
    }

    if(!is_good){
        cout << "NIE";
    }

    else{
        bool check = true;
        int t [26][n];
        int t1 [26][n];
        for(int i=0; i<26; ++i){
            for(int j=0; j<n; ++j){
                t[i][j] = -1;
                t1[i][j] = -1;
            }
        }
        int temp = 0;
        int tablica [26];
        int tablica2 [26];
        for(int i=0; i<26; ++i){
            tablica[i]=0;
            tablica2[i]=0;
        }
        for(int i=0; i<n; ++i){
            t[int(a[i]-97)][tablica[int(a[i]-97)]] = i;
            t1[int(b[i]-97)][tablica2[int(b[i]-97)]] = i;
            temp++;
            tablica[int(a[i]-97)]++;
            tablica2[int(b[i]-97)]++;
        }

        for(int i=0; i<26; ++i){
            for(int j=0; j<n;++j){
                if(t[i][j] != -1 && t1[i][j] != -1){
                    if((t[i][j]+t1[i][j])%2!=0){
                        check = false;
                        break;
                    }
                }
            }
        }
        if(check){
            cout << "TAK";
        }else{
            cout << "NIE";
        }

    }
    return 0;
}