This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef tuple<int, int, int> tp;
typedef long long LL;
typedef long double LD;
typedef pair<int, int> pii;
typedef pair<int, LL> pil;
typedef pair<LL, int> pli;
typedef pair<LL, LL> pll;
typedef pair<pii, int> piipi;
typedef pair<int, pii> pipii;
typedef pair<pii, pii> piipii;
typedef pair<LL, pii> plpii;
typedef pair<LD, LD> pdd;
typedef pair<LD, int> pdi;
typedef pair<LD, LL> pdl;
typedef pair<int, LD> pid;
typedef pair<LL, LD> pld;
const int mod = 1e9 + 7;
const int hf = 999983;
const int N = 1e6;
char s[555][555];
int fi[555], se[555];
int hv[555];
int cnt[555];
int main(){
    hv[0] = 1;
    for(int i=1;i<=555-1;i++) hv[i] = (hv[i-1]*1ll*hf)%mod;
    int n, k;
    scanf("%d%d", &n, &k);
    bool ok = 0;
    for(int i=1;i<=n;i++) scanf("%s", s[i]+1);
    for(int l=1;l<=n-k+1;l++){
        int r = l+k-1;
        memset(fi, 0, sizeof(fi));
        memset(se, 0, sizeof(se));
        for(int i=1;i<=n;i++){
            for(int j=1;j<=l-1;j++) fi[i] = (fi[i] + hv[j]*1ll*s[i][j])%mod;
            for(int j=r+1;j<=n;j++) fi[i] = (fi[i] + hv[j]*1ll*s[i][j])%mod;
            memset(cnt, 0, sizeof(cnt));
            for(int j=l;j<=r;j++) cnt[s[i][j]-'a']++;
            for(int j=0;j<26;j++) se[i] = (se[i] + hv[j]*1ll*cnt[j])%mod;
        }
        for(int i=1;i<=n;i++){
            for(int j=i+1;j<=n;j++){
                if(fi[i] == fi[j] && se[i] == se[j]) ok = 1;
            }
        }
    }
    if(ok) printf("DA\n");
    else printf("NE\n");
}
Compilation message (stderr)
ispit.cpp: In function 'int main()':
ispit.cpp:31:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d", &n, &k);
     ~~~~~^~~~~~~~~~~~~~~~
ispit.cpp:33:32: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     for(int i=1;i<=n;i++) scanf("%s", s[i]+1);
                           ~~~~~^~~~~~~~~~~~~~| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |