class
GFG {
static
int
MAX_LEN =
1005
;
static
int
MAX_CHAR =
26
;
static
int
ALL_CHARS =
256
;
static
boolean
compare(
char
[] arr1,
char
[] arr2)
{
for
(
int
i =
0
; i < ALL_CHARS; i++)
if
(arr1[i] != arr2[i])
return
false
;
return
true
;
}
static
boolean
search(String pat, String txt)
{
int
M = pat.length();
int
N = txt.length();
int
i;
char
countP[] =
new
char
[ALL_CHARS];
char
countTW[] =
new
char
[ALL_CHARS];
for
(i =
0
; i < M; i++) {
(countP[pat.charAt(i)])++;
(countTW[txt.charAt(i)])++;
}
for
(i = M; i < N; i++) {
if
(compare(countP, countTW)) {
return
true
;
}
(countTW[txt.charAt(i)])++;
countTW[txt.charAt(i - M)]--;
}
if
(compare(countP, countTW))
return
true
;
return
false
;
}
static
int
calculatesubString(String s1, String s2,
int
n)
{
int
count =
0
, j =
0
, x =
0
;
for
(
int
i =
0
; i < n; i++) {
for
(
int
len =
1
; len <= n - i; len++) {
if
(search(s1.substring(i, i + len), s2)) {
count = count +
1
;
}
}
}
return
count;
}
public
static
void
main(String args[])
{
String str1 =
"PLEASEHELPIMTRAPPED"
;
String str2 =
"INAKICKSTARTFACTORY"
;
int
len = str1.length();
System.out.println(calculatesubString(str1, str2, len));
}
}