//The solutions should be written, for compiler compatibility : j2se jdk 8u51
import java.io.*;
import java.util.*;
public class Main
{
static final int MAX = 10000000;
static boolean compare(char arr1[], char arr2[])
{
for (int i = 0; i < MAX; i++)
if (arr1[i] != arr2[i])
return false;
return true;
}
{
int M = pat.length();
int N = txt.length();
// System.out.println("A");
char[] countP = new char[MAX];
char[] countTW = new char[MAX];
// System.out.println("A");
for (int i = 0; i < M; i++)
{
countP[(int)pat.charAt(i)]++;
countTW[(int)txt.charAt(i)]++;
}
// System.out.println("B");
for (int i = M; i < N; i++)
{
if (compare(countP, countTW))
(countTW[txt.charAt(i)])++;
countTW[txt.charAt(i-M)]--;
}
// System.out.println("C");
if (compare(countP, countTW))
}
{
//use the following code to fetch input from console
Scanner in
= new Scanner
(System.
in); search(b,a);
}
}
Ly9UaGUgc29sdXRpb25zIHNob3VsZCBiZSB3cml0dGVuLCBmb3IgY29tcGlsZXIgY29tcGF0aWJpbGl0eSA6IGoyc2UgamRrIDh1NTEKCmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwuKjsKCnB1YmxpYyBjbGFzcyBNYWluCnsgIAogIHN0YXRpYyBmaW5hbCBpbnQgTUFYID0gMTAwMDAwMDA7IAogIAogICAgc3RhdGljIGJvb2xlYW4gY29tcGFyZShjaGFyIGFycjFbXSwgY2hhciBhcnIyW10pIAogICAgeyAKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1BWDsgaSsrKSAKICAgICAgICAgICAgaWYgKGFycjFbaV0gIT0gYXJyMltpXSkgCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IAogICAgICAgIHJldHVybiB0cnVlOyAKICAgIH0gCiAgICAKICAgIHN0YXRpYyB2b2lkIHNlYXJjaChTdHJpbmcgcGF0LCBTdHJpbmcgdHh0KSAKICAgIHsgCiAgICAgICAgaW50IE0gPSBwYXQubGVuZ3RoKCk7IAogICAgICAgIGludCBOID0gdHh0Lmxlbmd0aCgpOyAKICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIkEiKTsKICAgICAgICBjaGFyW10gY291bnRQID0gbmV3IGNoYXJbTUFYXTsgCiAgICAgICAgY2hhcltdIGNvdW50VFcgPSBuZXcgY2hhcltNQVhdOyAKICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIkEiKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE07IGkrKykgCiAgICAgICAgeyAKICAgICAgICAgICAgY291bnRQWyhpbnQpcGF0LmNoYXJBdChpKV0rKzsgCiAgICAgICAgICAgIGNvdW50VFdbKGludCl0eHQuY2hhckF0KGkpXSsrOyAKICAgICAgICB9IAogICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiQiIpOwogICAgICAgIGZvciAoaW50IGkgPSBNOyBpIDwgTjsgaSsrKSAKICAgICAgICB7IAogICAgICAgIAkKICAgICAgICAgICAgaWYgKGNvbXBhcmUoY291bnRQLCBjb3VudFRXKSkgCiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oU3RyaW5nLnZhbHVlT2YoKGkgLSBNKSkpOyAKICAgICAgICAgICAgICAKICAgICAgICAgICAgKGNvdW50VFdbdHh0LmNoYXJBdChpKV0pKys7IAogIAogICAgICAgICAgICBjb3VudFRXW3R4dC5jaGFyQXQoaS1NKV0tLTsgCiAgICAgICAgfSAKICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIkMiKTsKICAgICAgICBpZiAoY29tcGFyZShjb3VudFAsIGNvdW50VFcpKSAKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKFN0cmluZy52YWx1ZU9mKChOIC0gTSkpKTsgCiAgICB9IAoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCiAgICB7IAoJCS8vdXNlIHRoZSBmb2xsb3dpbmcgY29kZSB0byBmZXRjaCBpbnB1dCBmcm9tIGNvbnNvbGUgCiAgIAkJU3RyaW5nIGxpbmU7IAogICAgICAKICAgICAgCVNjYW5uZXIgaW4gPSBuZXcgU2Nhbm5lcihTeXN0ZW0uaW4pOwogICAgICAJU3RyaW5nIGEgPSBpbi5uZXh0KCk7CiAgICAgIAlTdHJpbmcgYiA9IGluLm5leHQoKTsKCSAgICBzZWFyY2goYixhKTsKICAgIH0KfQ==