import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
public class Main1 {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
try{
File file = new File("C:\\ecoli.fasta");
BufferedReader br = new BufferedReader(new FileReader(file));
StringBuilder sb = new StringBuilder();
String str = br.readLine();
while(str != null){
str=br.readLine();
sb.append(str);
}
br.close();
String ecoli=new String(sb);
System.out.println(ecoli.length());
int nBam=0; //配列に入ったBamHIの数を記憶しておく
int[] arrBam=new int[10000]; //大きめの配列を準備しておく
for(int i=0; i<ecoli.length()-6; i++){
if(ecoli.substring(i, i+6).equals("GGATCC")){
arrBam[nBam]=i;
nBam++;
}
}
System.out.println(nBam);
int nHind=0;
int[] arrHind=new int[10000];
for(int i=0; i<ecoli.length()-6; i++){
if(ecoli.substring(i, i+6).equals("AAGCTT")){
arrHind[nHind]=i;
nHind++;
}
}
System.out.println(nHind);
int n1=0; //左側がBamHI、右側がHindIIIで切断される場合を検索
for(int i=0;i<nBam;i++){
for(int j=0; j<nHind;j++){
if(arrHind[j+1]>arrBam[i] && arrBam[i+1]>arrHind[j+1] && arrBam[i]>arrHind[j] && arrHind[j+1]-arrBam[i]>=10*1000){
System.out.println("nBam:"+i+", nHind:"+j+", arrBam:"+arrBam[i]+", arrHind:"+arrHind[j]);
n1++;
}
}
}
System.out.println(n1);
int n2=0; //左側がHindIII、右側がBamHIで切断される場合を検索
for(int j=0;j<nHind;j++){
for(int i=0; i<nBam;i++){
if(arrBam[i+1]>arrHind[j] && arrHind[j+1]>arrBam[i+1] && arrHind[j]>arrBam[i] && arrBam[i+1]-arrHind[j]>=10*1000){
System.out.println("nBam:"+i+", nHind:"+j+", arrBam:"+arrBam[i]+", arrHind:"+arrHind[j]);
n2++;
}
}
}
System.out.println(n2);
System.out.println(n1+n2);
}catch(Exception e){
System.out.println(e);
}
}
}