Scanner scn = new Scanner(System.in);
int n = scn.nextInt();
int m = scn.nextInt();
int k = scn.nextInt();
int s = scn.nextInt();
char[][] a = new char[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
a[i][j] = scn.next().charAt(0);
}
}
for(char[] bc:a ) {
System.out.println(bc);
}
LostMagicalPark(a,n,m,k,s);
}
static void LostMagicalPark(char[][] a,int n, int m, int k, int s) {
int result = s;
System.out.println(a.length);
for (int i = 0; i < n ; i++) {
for (int j = 0; j < m ; j++) {
char ch = a[i][j];
if (ch == '.') {
result = result - 2;
if(j<a.length-1)
result--;
}
else if (ch == '*') {
result = result + 5;
if(j<a.length-1)
result--;
}
else if (ch == '#') {
if(i<n-1) {
i++;
j = 0;}
else {
break;
}
}
}
}
if(result>=k) {
System.out.println("Yes");
System.out.println(result);
}
}
}