import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        long k = sc.nextLong();
        sc.nextLine();
        String s = sc.nextLine();
        //每个1前面有几个0,就能个这个1组成多少对01子序列
        //使用l和r两个位置,先将r一直向右移动,一旦[l,r]中01序列数量超过了k,就将l右移。
        int l = 0, r = 0;
        int cnt0 = 0, cnt1 = 0; //分别记录区间[l,r]中0和1的个数
        //TODO 为了下方先进行r++,这里先处理0这个位置
        if (s.charAt(0) == '0')cnt0++;
        if (s.charAt(0) == '1')cnt1++;
        long cnt = 0; //记录区间[l,r]中01子序列的个数
        while (l < n && r < n) {
            if (cnt == k) {
                System.out.println((l + 1) + " " + (r + 1));
                return;
            }
            if (cnt < k) { //如果子序列个数小于k,需要右端点右移
                //TODO 这里右端点一定要先考虑右移
                r++;//右端点右移
                if (r >= n) { // 添加越界判断
                    break;
                }
                //若右端点是1,加进来后,前面所有的0都可以和这个1组成01子序列,所有总个数+cnt0
                if (s.charAt(r) == '1') {
                    cnt1++;
                    cnt += cnt0;
                } else { //如果右端点是0,加进来后,对答案毫无影响,只要cnt0加1
                    cnt0++;
                }
                //TODO 如果右端点在这里右移,会导致可能cnt+=cnt0后已经大于k了,但是这里还是r++
            } else { //如果子序列个数大于k,需要左端点右移
                //若左端点是1,排出序列后,对答案毫无影响,但是cnt1需要减1
                if (s.charAt(l) == '1') {
                    cnt1--;
                } else { //若左端点是0,排出去后,后面的所有1的结果都减少了1个,所有01子序列总个数-cnt1
                    cnt0--;
                    cnt -= cnt1;
                }
                //TODO 这里要后进行l++,如果一开始就l++,讨论的就不是真正的左端点了
                l++;//左端点右移
            }
        }
        //如果没有找到01子序列个数等于k的情况,输出-1
        System.out.println(-1);
    }
}