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
def best_work_time(tab1, tab2, harmonogram, n, k, t):
    shortest_time_at_work = n
    start = -1
    end = -1
    missing_meetings = 0
    for i in range(n-2*t+1):
        for j in range(i+t, n-t+1):
            if tab1[i] + tab2[j] > k:
                continue
            if j-i < shortest_time_at_work:
                shortest_time_at_work = j-i
                start = i
                end = j
                missing_meetings = tab1[i] + tab2[j]

    return missing_meetings, start, end

def main():
    n, k, t = map(int, input().split())

    harmonogram = input().strip()
    harmonogram = [int(cyfra) for cyfra in harmonogram]


    tablica3 = [0] * n  
    tablica3[0] = sum(1 for i in range(t) if harmonogram[i] == 1 or harmonogram[i] == 2)
    for p in range(1, n):
        tablica3[p] = tablica3[p - 1]
        if p + t - 1 < n and (harmonogram[p + t - 1] == 1 or harmonogram[p + t - 1] == 2):
            tablica3[p] += 1 
        if p - 1 >= 0 and harmonogram[p - 1] == 2:
            tablica3[p] -= 1 


    tablica4 = [0] * n 
    for p in range(n - 1, n - t, -1):
        tablica4[p] = 0
    tablica4[n - t] = sum(1 for i in range(n - t, n) if harmonogram[i] == 1 or harmonogram[i] == 2)
    for p in range(n - t - 1, -1, -1):
        tablica4[p] = tablica4[p + 1] 
        if harmonogram[p] == 1 or harmonogram[p] == 2:
            tablica4[p] += 1 
        if p + t < n and harmonogram[p + t] == 2:
            tablica4[p] -= 1


    if harmonogram.count(1) > k:
        missing_meetings, start, end = best_work_time(tablica3, tablica4, harmonogram, n, k, t)
        twos_number = harmonogram[0:start].count(2) + harmonogram[end+t:n].count(2)
        free_time = n - (end+t - start) - twos_number + (k-missing_meetings)

        if start == -1:
            free_time = -1
    else:
        ones_number = harmonogram.count(1)
        twos_number = harmonogram.count(2)
        leaved_meetingd = min(ones_number + twos_number, k)
        free_time = n - ones_number - twos_number + leaved_meetingd

    #print("harmonogram liczb:", harmonogram)
    #print("Tablica 3:        ", tablica3)
    #print("Tablica 4:        ", tablica4)
    #print("Czas wolny:       ", free_time)
    print(free_time)

if __name__ == "__main__":
    main()