import java.util.Scanner;
/**
*
* @author cteam023
*/
public class Fm {
private boolean [][] table;
private int kartaR;
private int kartaS;
public Fm(boolean[][] matice, int kartaR, int kartaS){
this.kartaR = kartaR;
this.kartaS = kartaS;
table = new boolean[matice.length + kartaR - 1][matice[0].length + kartaS - 1];
for (int i = 0; i < matice.length; i++){
for (int j = 0; j < matice[0].length; j++){
if (matice[i][j]){
for (int a = i; a < i + kartaR; a++){
for (int b = j; b < j + kartaS; b++){
table[a][b] = true;
}
}
}
}
}
}
public void vypisVysledek(){
int counter;
for (int ri = 0; ri < kartaR; ri++){
for (int si = 0; si < kartaS; si++){
counter = 0;
for (int i = ri; i < table.length; i+= kartaR){
for (int j = si; j < table[0].length; j+= kartaS){
if (table[i][j]){
counter++;
}
}
}
if (counter < min){
min = counter;
}
}
}
}
public static void main
(String[] args
) { Scanner sc
= new Scanner
(System.
in); int radku, sloupcu;
int kartaR, kartaS;
boolean [][] matice;
while (sc.hasNextInt()){
radku = sc.nextInt();
sloupcu = sc.nextInt();
kartaR = sc.nextInt();
kartaS = sc.nextInt();
matice = new boolean[radku][sloupcu];
sc.nextLine();
for (int i = 0; i < radku; i++){
radek = sc.nextLine();
for (int j = 0; j < sloupcu; j++){
matice[i][j] = radek.charAt(j)=='X' ? true : false;
}
}
Fm pripad = new Fm(matice, kartaR, kartaS);
pripad.vypisVysledek();
}
}
}