#include <bits/stdc++.h>
using namespace std;
const int N = 4e4 + 10;
struct Edge {
  int to, nxt;
} e[6000010];
int h[N], idx;
void Ins(int a, int b) {
  e[++idx].to = b;
  e[idx].nxt = h[a];
  h[a] = idx;
}
int a[N], que[N], tt, dis[N], n, m, pos[N];
bool inq[N];
void bfs(int s) {
  memset(dis, 0x3f, sizeof(dis));
  memset(inq, 0, sizeof(inq));
  queue<int> q;
  q.push(s);
  dis[s] = 0;
  inq[s] = 1;
  while (!q.empty()) {
    int u = q.front();
    q.pop();
    for (int i = 1; i <= m; i++) {
      const int d = pos[i];
      if (u + d <= n + 1 && (!inq[u + d])) {
        dis[u + d] = dis[u] + 1;
        q.push(u + d);
        inq[u + d] = 1;
      }
      if (u - d > 0 && (!inq[u - d])) {
        dis[u - d] = dis[u] + 1;
        q.push(u - d);
        inq[u - d] = 1;
      }
    }
  }
}
int cnt[N], res, clo;
long long f[1 << 20], mp[110][110];
void dfs(int u, int s) {
  if (s > res) return;
  if (u == tt) {
    for (int i = 1; i < tt; i++)
      if (!(cnt[i] & 1)) return;
    res = min(res, s);
    return;
  }
  clo++;
  if (clo >= 6000000) {
    printf("%d\n", res);
    exit(0);
  }
  for (int i = 1; i <= tt; i++) {
    cnt[u]++;
    cnt[i]++;
    dfs(u + 1, s + mp[u][i]);
    cnt[u]--;
    cnt[i]--;
  }
}
int main() {
  int k;
  scanf("%d%d%d", &n, &k, &m);
  for (int i = 1; i <= k; i++) {
    int x;
    scanf("%d", &x);
    a[x] = 1;
  }
  for (int i = 1; i <= n + 1; i++)
    if (a[i] ^ a[i - 1]) que[++tt] = i;
  for (int i = 1; i <= m; i++) scanf("%d", &pos[i]);
  for (int i = 1; i <= tt; i++) {
    bfs(que[i]);
    for (int j = 1; j <= tt; j++) {
      mp[i][j] = dis[que[j]];
    }
  }
  int Mx = 1 << tt;
  for (int i = 1; i <= Mx; i++) f[i] = 1e9;
  for (register int i = 0; i < Mx; i++) {
    int j = 1;
    while (i & (1 << j - 1)) j++;
    for (register int c = j + 1; c <= tt; c++) {
      if (i & (1 << c - 1)) continue;
      f[i | (1 << c - 1) | (1 << j - 1)] =
          min(f[i | (1 << c - 1) | (1 << j - 1)], f[i] + mp[c][j]);
    }
  }
  printf("%lld\n", f[Mx - 1] == 1e9 ? -1 : f[Mx - 1]);
  return 0;
}
