#include <bits/stdc++.h>
using namespace std;
const int INF = 1791791791;
const int maxn = 100;
const int maxm = 2179;
int dp[maxn][maxn][maxn];
struct edge {
  int u, v, c;
};
edge graph[maxm];
int main() {
  for (int i = 1; i < maxn; i++) {
    for (int j = 0; j < maxn; j++) {
      for (int k = 0; k < maxn; k++) {
        dp[i][j][k] = INF;
      }
    }
  }
  int n, k, m;
  cin >> n >> k >> m;
  for (int i = 0; i < m; i++) {
    cin >> graph[i].u >> graph[i].v >> graph[i].c;
    graph[i].u--;
    graph[i].v--;
  }
  for (int i = 1; i < k; i++) {
    for (int ei = 0; ei < m; ei++) {
      edge e = graph[ei];
      for (int end = 0; end < n; end++) {
        if (e.u == end) continue;
        if (end < e.u) {
          if (e.v < e.u && e.v >= end) {
            dp[i][e.v][end] = min(dp[i][e.v][end], dp[i - 1][e.u][end] + e.c);
            dp[i][e.v][e.u - 1] =
                min(dp[i][e.v][e.u - 1], dp[i - 1][e.u][end] + e.c);
          }
        } else {
          if (e.v > e.u && e.v <= end) {
            dp[i][e.v][end] = min(dp[i][e.v][end], dp[i - 1][e.u][end] + e.c);
            dp[i][e.v][e.u + 1] =
                min(dp[i][e.v][e.u + 1], dp[i - 1][e.u][end] + e.c);
          }
        }
      }
    }
  }
  int mn = INF;
  for (int i = 0; i < n; i++) {
    for (int end = 0; end < n; end++) {
      mn = min(mn, dp[k - 1][i][end]);
    }
  }
  if (mn == INF)
    cout << -1 << endl;
  else
    cout << mn << endl;
  return 0;
}
