'use strict';

const fs = require('fs');

process.stdin.resume();
process.stdin.setEncoding('utf-8');

let inputString = '';
let currentLine = 0;

process.stdin.on('data', function(inputStdin) {
    inputString += inputStdin;
});

process.stdin.on('end', function() {
    inputString = inputString.split('\n');

    main();
});

process.on('SIGINT', function() {
    inputString = inputString.split('\n');

    main();
    process.exit(0);
});

function readLine() {
    return inputString[currentLine++];
}

/*
 * Complete the 'appendAndDelete' function below.
 *
 * The function is expected to return a STRING.
 * The function accepts following parameters:
 *  1. STRING s
 *  2. STRING t
 *  3. INTEGER k
 */

function appendAndDelete(s, t, k) {
    s = s.trim();
    t = t.trim();
    let n = s.length;
    let m = t.length;

    // console.log(`n: ${n}, m: ${m}`);

    let a = new Array(n+1);
    for (let i = 0; i <= n; i++) {
        a[i] = new Array(m+1);
    }

    for (let i = 0; i <= m; i++) {
        a[0][i] = i;
    }

    for (let i = 0; i <= n; i++) {
        a[i][0] = i;
    }

    for (let i = 1; i <= n; i++) {
        for (let j = 1; j <= m; j++) {
            // console.log(`I: ${i}, J: ${j}, Sc: ${s[i-1]}, Tc: ${t[j-1]}`);
            if (s[i-1] === t[j-1]) {
                a[i][j] = a[i-1][j-1];
            } else {
                a[i][j] = Math.min(a[i-1][j]+1, a[i][j-1]+1);
            }
        }
    }

    // console.log('Array', a);

    console.log(`Min operations: ${a[n][m]}`);

    let res = a[n][m] <= k ? 'Yes': 'No';
    // console.log(`Res: ${res}`);
    return res;

}

function main() {
    const ws = fs.createWriteStream(process.env.OUTPUT_PATH);

    const s = readLine();

    const t = readLine();

    const k = parseInt(readLine().trim(), 10);

    const result = appendAndDelete(s, t, k);

    ws.write(result + '\n');

    ws.end();
}
