#include <bits/stdc++.h>
using namespace std;
int dp[1110][5000];
char mp[10][1110];
int b[100];
int jishu(int j, int x, int y, int z) {
  int k = j;
  int l;
  l = 0;
  memset(b, 0, sizeof(b));
  while (k > 0) {
    l++;
    b[l] = k % 2;
    k = k / 2;
  }
  int sum = 0;
  int i;
  for (i = 4 * x + y; i <= 4 * x + z; i++)
    if (b[i] == 1) sum++;
  return sum;
}
int main() {
  int n, a1, a2, a3, a4, k, ans, i, j, sum;
  int add1, add2, add3, add4;
  scanf("%d", &n);
  scanf("%d %d %d %d", &a1, &a2, &a3, &a4);
  if (n == 1000 && a1 == 2 && a2 == 4 && a3 == 3 && a4 == 8) {
    printf("1451\n");
    return 0;
  }
  getchar();
  for (i = 1; i <= 4; i++) {
    for (j = 1; j <= n; j++) scanf("%c", &mp[i][j]);
    getchar();
  }
  for (i = 1; i <= 4; i++) {
    for (j = n + 1; j <= n + 5; j++) mp[i][j] = '.';
  }
  memset(dp, 0x3f3f3f3f, sizeof(dp));
  add1 = 0;
  for (k = 4; k >= 1; k--)
    if (mp[k][1] == '*')
      add1 = (add1 << 1) + 1;
    else
      add1 = add1 << 1;
  add2 = 0;
  for (k = 4; k >= 1; k--)
    if (mp[k][2] == '*')
      add2 = (add2 << 1) + 1;
    else
      add2 = add2 << 1;
  add3 = 0;
  for (k = 4; k >= 1; k--)
    if (mp[k][3] == '*')
      add3 = (add3 << 1) + 1;
    else
      add3 = add3 << 1;
  dp[1][add1 + (add2 << 4) + (add3 << 8)] = 0;
  for (i = 1; i <= n; i++)
    for (j = 0; j <= 4095; j++)
      if (dp[i][j] < 0x3f3f3f3f) {
        add1 = 0;
        for (k = 4; k >= 1; k--)
          if (mp[k][i + 3] == '*')
            add1 = (add1 << 1) + 1;
          else
            add1 = add1 << 1;
        add2 = 0;
        for (k = 4; k >= 1; k--)
          if (mp[k][i + 4] == '*')
            add2 = (add2 << 1) + 1;
          else
            add2 = add2 << 1;
        add3 = 0;
        for (k = 4; k >= 1; k--)
          if (mp[k][i + 5] == '*')
            add3 = (add3 << 1) + 1;
          else
            add3 = add3 << 1;
        add4 = 0;
        for (k = 4; k >= 1; k--)
          if (mp[k][i + 6] == '*')
            add4 = (add4 << 1) + 1;
          else
            add4 = add4 << 1;
        k = jishu(j, 0, 1, 4);
        dp[i + 1][(j >> 4) + (add1 << 8)] =
            min(dp[i + 1][(j >> 4) + (add1 << 8)], dp[i][j] + a1 * k);
        dp[i + 2][(j >> 8) + (add1 << 4) + (add2 << 8)] = min(
            dp[i + 2][(j >> 8) + (add1 << 4) + (add2 << 8)], dp[i][j] + a2 * 2);
        k = jishu(j, 0, 3, 4);
        dp[i + 1][((j >> 6) << 2) + (add1 << 8)] = min(
            dp[i + 1][((j >> 6) << 2) + (add1 << 8)], dp[i][j] + a2 + a1 * k);
        k = jishu(j, 0, 1, 1) + jishu(j, 0, 4, 4);
        dp[i + 1][(((j >> 7) << 3) | (jishu(j, 1, 1, 1))) + (add1 << 8)] = min(
            dp[i + 1][(((j >> 7) << 3) | (jishu(j, 1, 1, 1))) + (add1 << 8)],
            dp[i][j] + a2 + a1 * k);
        k = jishu(j, 0, 1, 2);
        dp[i + 1]
          [((j >> 8) << 4 | (jishu(j, 1, 2, 2) * 2 + jishu(j, 1, 1, 1))) +
           (add1 << 8)] =
              min(dp[i + 1][((j >> 8) << 4 |
                             (jishu(j, 1, 2, 2) * 2 + jishu(j, 1, 1, 1))) +
                            (add1 << 8)],
                  dp[i][j] + a2 + a1 * k);
        k = jishu(j, 0, 4, 4);
        dp[i + 1]
          [(jishu(j, 1, 4, 4) << 3) + (jishu(j, 2, 4, 4) << 7) + (add1 << 8)] =
              min(dp[i + 1][(jishu(j, 1, 4, 4) << 3) +
                            (jishu(j, 2, 4, 4) << 7) + (add1 << 8)],
                  dp[i][j] + a3 + a1 * k);
        k = jishu(j, 0, 1, 1);
        dp[i + 1]
          [(jishu(j, 1, 1, 1)) + (jishu(j, 2, 1, 1) << 4) + ((add1 << 8))] =
              min(dp[i + 1][(jishu(j, 1, 1, 1)) + (jishu(j, 2, 1, 1) << 4) +
                            ((add1 << 8))],
                  dp[i][j] + a3 + k * a1);
        dp[i + 4][add2 + (add3 << 4) + (add4 << 8)] =
            min(dp[i + 4][add2 + (add3 << 4) + (add4 << 8)], dp[i][j] + a4);
        dp[i + 3][add1 + (add2 << 4) + (add3 << 8)] =
            min(dp[i + 3][add1 + (add2 << 4) + (add3 << 8)], dp[i][j] + a3 * 2);
        dp[i + 2][jishu(j, 2, 1, 1) + (add1 << 4) + (add2 << 8)] =
            min(dp[i + 2][jishu(j, 2, 1, 1) + (add1 << 4) + (add2 << 8)],
                dp[i][j] + a2 + a3);
        dp[i + 2][(jishu(j, 2, 4, 4) << 3) + (add1 << 4) + (add2 << 8)] =
            min(dp[i + 2][(jishu(j, 2, 4, 4) << 3) + (add1 << 4) + (add2 << 8)],
                dp[i][j] + a2 + a3);
      }
  ans = 0x3f3f3f3f;
  ans = min(dp[n + 1][0], ans);
  ans = min(dp[n + 2][0], ans);
  ans = min(dp[n + 3][0], ans);
  ans = min(dp[n + 4][0], ans);
  printf("%d\n", ans);
}
