#include <bits/stdc++.h>
using namespace std;
int n;
int a[5];
char g[4][1001];
int dp[4][1001][16][16][16];
int solve(int i, int j, int m1, int m2, int m3) {
  if (i == 4) return solve(0, j + 1, m2, m3, 0);
  if (j == n) return 0;
  int &ret = dp[i][j][m1][m2][m3];
  if (ret != -1) return ret;
  ret = 1 << 30;
  if (g[i][j] == '.' || ((1 << i) & m1) != 0)
    ret = min(ret, solve(i + 1, j, m1, m2, m3));
  if (j + 4 <= n && i == 0) ret = min(ret, a[4] + solve(0, j + 1, 15, 15, 15));
  for (int k = 1; k <= 3; k++) {
    if (n - j < k || 4 - i < k) break;
    int M1 = m1, M2 = m2, M3 = m3;
    for (int c = 0; c < k; c++) {
      int cc = i + c;
      M1 |= (1 << cc);
      if (k > 1) M2 |= (1 << cc);
      if (k > 2) M3 |= (1 << cc);
    }
    ret = min(ret, a[k] + solve(i + 1, j, M1, M2, M3));
  }
  return ret;
}
int main() {
  cin >> n;
  for (int i = 1; i <= 4; i++) cin >> a[i];
  for (int i = 0; i < 4; i++)
    for (int j = 0; j < n; j++) cin >> g[i][j];
  memset(dp, -1, sizeof dp);
  cout << solve(0, 0, 0, 0, 0);
  return 0;
}
